我已经看到了错误4的报告但不是5的报告.当我尝试使用"openParentApplication:reply"请求时,我将此作为控制台消息.日志中没有足够的信息来确定问题是在iOS代码,WK代码还是模拟器中.我重新启动了sim,并清理了项目.有任何想法吗?
WK代码:
- (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"]];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
唯一的控制台日志是:
WatchKit Extension[48954:9523373] Error Domain=FBSOpenApplicationErrorDomain Code=5 "The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 5.)
Run Code Online (Sandbox Code Playgroud)
我今天也面临同样的问题.
info.plist 但当我运行应用程序时Production,它工作.应用程序在生产模式下运行良好,带有模拟器.
接下来,我删除了现有的dev模式方案并创建了另一种dev模式方案,并且它有效 然后它提醒我,在应用程序中实现后台提取功能时,我检查Launch due to a background fetch event了该Dev方案中的选项选项.后来我放弃Background Fetch但忘了取消选中这个选项.
我建议你尝试简化。我在这里回答了Swift 中的一个非常相似的问题。我将逻辑简化为以下内容:
WK代码
- (IBAction)sendRequest {
[InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) {
NSLog(@"Reply Info: %@", replyInfo);
NSLog(@"Error: %@", error);
}];
}
Run Code Online (Sandbox Code Playgroud)
iOS 代码
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply {
NSDictionary *response = @{@"replyKey" : @"replyValue"};
reply(response);
}
Run Code Online (Sandbox Code Playgroud)
一旦你完成了这项工作,然后开始一步一步地添加额外的解析。您还可以将调试器附加到 iOS 应用程序,以按照以下说明逐步完成调用。您可能没有调用 iOS 应用程序上的回复块,而且您甚至不知道。
| 归档时间: |
|
| 查看次数: |
3227 次 |
| 最近记录: |