iOS Error: FBSOpenApplicationErrorDomain error 5. What does this mean?

谁说我不能喝 提交于 2019-12-23 10:05:57

问题


I've seen reports for errors 4 but not for 5. I get this as a console message when I'm trying to use an "openParentApplication:reply" request. There isn't enough information in the log to know if the problem is in the iOS code, the WK code or the Simulator. I've restarted the sim, and cleaned the project. Any ideas?

WK Code:

- (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"]];
        }

    }];
}

iOS Code:

- (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);
    }

}

The only console log is:

WatchKit Extension[48954:9523373] Error Domain=FBSOpenApplicationErrorDomain Code=5 "The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 5.)

回答1:


I would suggest you try to simplify. I have answered a very similar problem here that is in Swift. I would simplify the logic to the following:

WK Code

- (IBAction)sendRequest {
    [InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) {
        NSLog(@"Reply Info: %@", replyInfo);
        NSLog(@"Error: %@", error);
    }];
}

iOS Code

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply {
    NSDictionary *response = @{@"replyKey" : @"replyValue"};
    reply(response);
}

Once you have this working, then start adding the additional parsing one step at a time. You can also attach the debugger to the iOS app to step through the call by following these instructions. You may not be calling the reply block on the iOS app and you don't even know it.




回答2:


I also faced same issue today.

  • Deleted app from simulator 😂
  • Reset simulator 😟
  • Restarted XCode 😦
  • Made changes in info.plist 😥

But when I ran app in Production, it worked 😃. App was running well in production mode with simulator.

Next, I deleted existing dev mode scheme and created another dev mode scheme and it worked 😳. Then it reminded me that while implementing background fetch feature in the app, I checked option Launch due to a background fetch event option in that Dev scheme. Later i gave up Background Fetch but forgot to uncheck this option. 😠




回答3:


In my case only quitting simulator resolved the issue.



来源:https://stackoverflow.com/questions/28920969/ios-error-fbsopenapplicationerrordomain-error-5-what-does-this-mean

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!