[英]Load data asynchronously after notification on apple watch
我收到一条通知,该通知中的有效负载中包含一个ID。 这个ID就是在那里,所以我可以在服务器上获取实际的对象。
现在,我仅使用AppDelegate HandleWatchKitExtensionRequest
和.OpenParentApplication
中的.OpenParentApplication进行通信。
使用该方法,如果我不进行任何Web服务调用,那就很好。 尝试调用服务器后,我收到一条错误消息,说父应用程序从不调用reply()
。
所以很明显我在想异步调用会使它失败。
实现此目标的最佳方法是什么? 我有一种错的感觉,但是我在网上找不到其他真正的解决方案。
现在看起来像这样
注意:我正在使用Xamarin,但是任何Obj-C / Swift代码都足够,并且我需要与WatchOS 1兼容,因此我不能真正使用WCSession / WatchConnectivity框架,可以吗?
处在非常相似的情况下,希望以下内容对您有所帮助。 因此,当watchkit应用程序调用主应用程序时,开始后台任务,加载要加载的内容,然后结束bg任务。 像这样:
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
{
__block UIBackgroundTaskIdentifier watchKitHandler;
watchKitHandler = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"backgroundTask"
expirationHandler:^{
watchKitHandler = UIBackgroundTaskInvalid;
}];
//load the things here.
reply(@{@"hehe":@"hehe123"});
dispatch_after( dispatch_time( DISPATCH_TIME_NOW, (int64_t)NSEC_PER_SEC * 10. ), dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
[[UIApplication sharedApplication] endBackgroundTask:watchKitHandler];
} );
}
希望这是有用的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.