Widziałem raporty o błędach 4, ale nie dla 5. Otrzymuję to jako komunikat konsoli, gdy próbuję użyć żądania "openParentApplication: reply". W dzienniku nie ma wystarczających informacji, aby wiedzieć, czy problem dotyczy kodu iOS, kodu WK czy symulatora. Ponownie uruchomiłem sim i wyczyściłem projekt. Jakieś pomysły?Błąd iOS: FBSOpenApplicationErrorDomain error 5. Co to oznacza?
WK Kod:
- (IBAction)sendRequest {
NSDictionary *request = @{@"request":@"Request1"};
[InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
[self.label1 setText:[replyInfo objectForKey:@"response1"]];
[self.label2 setText:[replyInfo objectForKey:@"response2"]];
[self.label3 setText:[replyInfo objectForKey:@"response3"]];
}
}];
}
Kod iOS:
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply{
NSLog(@"%s", __FUNCTION__);
//([max intValue] - [min intValue]) + [min intValue]
int randNum1 = arc4random_uniform(16);
int randNum2 = arc4random_uniform(16);
int randNum3 = arc4random_uniform(16);
NSString *num1 = [NSString stringWithFormat:@"Test%d", randNum1];
NSString *num2 = [NSString stringWithFormat:@"Test%d", randNum2];
NSString *num3 = [NSString stringWithFormat:@"Test%d", randNum3];
if ([[userInfo objectForKey:@"request"] isEqualToString:@"Request1"]) {
NSLog(@"containing app received message from watch: Request1");
NSDictionary *response = @{@"response1" : num1, @"response2" : num2, @"response3" : num3};
reply(response);
}
}
Jedyny dziennik konsoli:
WatchKit Extension[48954:9523373] Error Domain=FBSOpenApplicationErrorDomain Code=5 "The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 5.)
OK. Zgodnie z obietnicą, odpowiedź brzmi następująco: W pliku info.plist ustawiłem "Aplikacja nie działa w tle" na TAK. To spowodowało problem. Zmiana tego ustawienia na NIE naprawiła to. Dzięki Faber na forach AppleDev. –