我目前有一个问题。
我想要的行为:如果我打开我的 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/

10-11 08:30