我有这个奇怪的问题:
我正常呼叫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
或从父应用程序调用相同的代码,它就可以正常工作。
答案 0 :(得分:1)
我认为你不能按照你想要的方式打电话/使用MKMapSnapshooter
。当您使用openParentApplication
发出请求时,它会以后台模式打开您的父应用,MKMapSnapshooter
需要前景模式才能发送最终图片。
根据Apple文档:
快照程序仅在最终图像发布时将其传送到您的应用 在前台跑。快照程序必须渲染最终图像 而你的应用程序在前台。如果你开始生成一个 应用程序在后台或您的应用移动到的时候快照 快照正在进行时的背景,此行为会延迟 快照的传递,直到您的应用程序返回到前台。