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, документы:

Снимок доставляет окончательное изображение в ваше приложение, только когда оно работает на переднем плане. Снимок должен отображать окончательное изображение, пока ваше приложение находится на переднем плане. Если вы начинаете создавать снимок, когда приложение находится в фоновом режиме, или если ваше приложение перемещается в фоновый режим, когда снимок выполняется, это приводит к задержке доставки снимка, пока ваше приложение не вернется на передний план.

Другие вопросы по тегам