我目前有一个问题。
我想要的行为:如果我打开我的 WatchKit 应用程序,我会调用“openParentApplication”。我收到了我想要的数据。
但是如果我在真实设备上测试,它不起作用,因为我在 iPhone 中打开了父应用程序。
但是当我在模拟器中进行测试时,它无需打开父应用程序即可工作。
我的 Xcode 版本是 6.3.2 和 iOS 8.3。
可能是什么问题呢?
接口(interface) Controller .m
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
NSDictionary *userInfo = @{@"request":@"refreshData"};
[WKInterfaceController openParentApplication:userInfo reply:^(NSDictionary *replyInfo, NSError *error)
{
entries = replyInfo;
NSLog(@"Reply: %@",replyInfo);
[self reloadTable];
[self.city setText:[entries valueForKey:@"city"][0] ];
}];
}
AppDelegate.m
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo))reply
{
NSString *refresh = [userInfo valueForKey:@"request"];
if([refresh isEqualToString:@"refreshData"])
{
NSString *city = [[NSUserDefaults standardUserDefaults] stringForKey:@"City"];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:[NSString stringWithFormat:@"http://blackdriver.adappter.de/api/retrieve.php?city=%@",[city stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
{
reply(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"Error: %@", error);
}];
}
}
编辑 - 正确答案:
在评论中查看来自 mohammed alwaili 的链接
最佳答案
openParentApplication:reply
请求必须立即返回,因此您必须请求额外的时间来完成 asynchronous
请求(或者运行 synchronous
请求,但这是糟糕的做法)。
从 Apple WatchKit Developer Tips and Best Practices :
关于ios - WatchKit openParentApplication :reply,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30691703/