MKMapSnapshotter completeHandler никогда не вызывается в родительском приложении при вызове из WatchKit
У меня странная проблема: я вызываю родительское приложение с 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 ответ
Я не думаю, что вы можете позвонить / использовать MKMapSnapshooter
так, как вы хотите. Когда вы используете openParentApplication
чтобы сделать запрос, он открывает родительское приложение в фоновом режиме и MKMapSnapshooter
требуется режим переднего плана для доставки окончательного изображения.
согласно Apple, документы:
Снимок доставляет окончательное изображение в ваше приложение, только когда оно работает на переднем плане. Снимок должен отображать окончательное изображение, пока ваше приложение находится на переднем плане. Если вы начинаете создавать снимок, когда приложение находится в фоновом режиме, или если ваше приложение перемещается в фоновый режим, когда снимок выполняется, это приводит к задержке доставки снимка, пока ваше приложение не вернется на передний план.