从WatchKit调用时,MKMapSnapshotter completionHandler从不在父应用程序中调用

时间:2015-06-04 13:22:52

标签: ios objective-c watchkit mkmapsnapshotter

我有这个奇怪的问题: 我正常呼叫openParentApplication:reply:的父应用。

很好地利用异步NSURLRequests从互联网上获取一些数据,但是当我想使用MKMapSnapshotter(仍然在父应用程序中)获取地图图像时,它的完成块永远不会被调用

MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    NSLog(@"completion handler is called"); //this never called
};

我尝试在snapshotter startWithQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)等处使用:dispatch_get_main_queue(),但似乎没有任何效果。

如果我直接从WKInterfaceController或从父应用程序调用相同的代码,它就可以正常工作。

1 个答案:

答案 0 :(得分:1)

我认为你不能按照你想要的方式打电话/使用MKMapSnapshooter。当您使用openParentApplication发出请求时,它会以后台模式打开您的父应用,MKMapSnapshooter需要前景模式才能发送最终图片。

根据Apple文档:

  

快照程序仅在最终图像发布时将其传送到您的应用   在前台跑。快照程序必须渲染最终图像   而你的应用程序在前台。如果你开始生成一个   应用程序在后台或您的应用移动到的时候快照   快照正在进行时的背景,此行为会延迟   快照的传递,直到您的应用程序返回到前台。