2015-01-06 14 views
0

В IOS версии 8.1.2, я нашел очень странный вопрос:
я реализую ниже метод для обработки нажать данные в AppDelegateметод iOS8.1.2 didReceiveRemoteNotification не вызывается, когда устройство не подключено

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 

Если ваше устройство не подключено, этот метод не вызывается.

ответ

2

Если вы посмотрите вокруг, вы увидите, что другие подумали, что это будет ошибка в бета-версии iOS 7.1, исправленная в версии 7.1, но она, вероятно, не имеет никакого отношения к какой-либо бета-версии Testflight, определенной версии 8.1.2 и т. д., как вы говорите в своем ответе. Я уверен, что this - единственный правильный ответ. Кстати, у меня такая же проблема, но в 8.1.3, поэтому, я думаю, она снова появится у вас.

После того, как вы удалили приложение, перезагрузите телефон и установите приложение, didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler: называется отлично (что объясняет «Использовать tesflight!», «В 7.1.x оно работает!» И т. Д.), Но если вы делаете слишком много вычислений в результате получения удаленного уведомления или не вызываете обработчик завершения вовремя, система вам больше не понравится и начнет вызывать метод позже, когда захочет, что обычно будет 0-30 минут после вашего уведомление получено, или veeery long (см. обновление ниже). Со мной, иногда это случалось уже после первого удаленного уведомления. Если, конечно, устройство не подключено, то оно будет намного надежнее.

После подключения (подключения) устройства система может затем вызвать ваш метод, как правило, он занимает до 15 минут до того, как он будет вызван, или он может просто работать мгновенно, если вы нажмете одно и то же уведомление через час, но это также не уверен. Это действительно боль, но не думайте об этом как о чем-то, что будет исправлено, так это то, как Apple создала его.

ОБНОВЛЕНИЕ: Это будет называться в конечном итоге. Я отправил удаленное уведомление в 18.13 часов, а didReceiveRemoteNotification:fetchCompletionHandler: не был вызван до 09.41h на следующий день. Поэтому в моем случае потребовалось 15,5 часов, пока метод не был вызван. В моем случае причиной этого является то, что я использую удаленные уведомления для запуска и остановки отслеживания местоположения в фоновом режиме, что является тяжелым материалом.

0

После того, как номер another answer об этой проблеме, я подтвердил, что это действительно ошибка в iOS 8.1.2. Я очень удивлен, что в интернете нет ничего особенного.

Но по моему тесту это не имеет никакого отношения к профилю обеспечения, использование TestFlight от Apple не работает.

Смежные вопросы