0

我有这个奇怪的问题:我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:ondispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)dispatch_get_main_queue()etc. 但似乎没有任何效果。

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

4

1 回答 1

1

我不认为你可以调用/使用MKMapSnapshooter你想要的方式。当您用于openParentApplication发出请求时,它会在后台模式下打开您的父应用程序,并且MKMapSnapshooter需要前台模式来提供最终图像。

根据苹果文档:

快照程序仅在前台运行时才将最终图像传递给您的应用程序。当您的应用程序在前台时,快照程序必须渲染最终图像。如果您在应用程序处于后台时开始生成快照,或者如果您的应用程序在进行快照时移动到后台,则此行为会延迟快照的传递,直到您的应用程序返回到前台。

于 2015-06-04T20:41:33.963 回答