Обратный вызов удаленного уведомления не вызывается во время телефонного звонка

Я создал приложение, в котором код фоновой выборки записывается при получении push-уведомления. Я включил фоновый режим в .plist, для ключа доступа к содержимому установлено значение 1 в полезной нагрузке push-уведомления, зарегистрирован для push-уведомления и с использованием делегата

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

Теперь, когда мое приложение находится в фоновом режиме, мне звонят. Во время вызова я получаю push-уведомление для своего приложения.
При получении push-уведомления во время вызова делегат push-уведомления не вызывается.


person GAURAV VIG    schedule 05.08.2015    source источник
comment
вы зарегистрировались для push-уведомлений   -  person EI Captain v2.0    schedule 05.08.2015
comment
@Bhavin Я зарегистрировался для получения push-уведомлений.   -  person GAURAV VIG    schedule 06.08.2015
comment
Да, делегат не вызывается   -  person GAURAV VIG    schedule 06.08.2015
comment
Вы действительно получаете уведомление во время телефонного звонка? Откуда вы знаете? Здесь есть еще один вопрос с похожей проблемой.   -  person Baris Akar    schedule 06.08.2015
comment
Баннер @BarisAkar отображается, когда приходит push-уведомление.   -  person GAURAV VIG    schedule 06.08.2015
comment
Кажется вполне разумным, что более новые версии ОС не вызывают ваш обратный вызов, поскольку именно эта проблема преследует iOS 5 и 6, к большому неудовольствию множества пользователей. Вы проверили это поведение, когда ваше приложение не запущено, и проверили, что application:willFinishLaunchingWithOptions: также не вызывается с UIApplicationLaunchOptionsRemoteNotificationKey при завершении вызова?   -  person SwiftArchitect    schedule 20.08.2015
comment
Push-уведомления запускаются системой, а не приложением, поэтому во время звонка система может получить доступ ко всем ресурсам, но приложение может быть приостановлено до завершения телефонного звонка.   -  person Pablo A.    schedule 23.08.2015
comment
@GAURAVVIG Попробуйте добавить звук к уведомлению. Будет ли это работать тогда?   -  person EugZol    schedule 25.08.2015
comment
Насколько я знаю, отображение push-оповещения не вызывает didReceiveRemoteNotification, вам нужно щелкнуть по полученному push-уведомлению, и после этого push-уведомление будет зарегистрировано в didReceiveRemoteNotification, и вы можете делать все, что захотите. В противном случае вы могли бы контролировать и выполнять множество действий, когда фон / передний план, а это не разрешено, если только не выполнять действия, такие как воспроизведение музыки.   -  person Felipe Florencio    schedule 31.08.2015


Ответы (2)


Таким образом, для обработки push-уведомления/удаленного уведомления во время телефонного звонка здесь ниже метод: когда телефонный звонок получен, приложение становится неактивным, а когда телефонный звонок отключается, приложение становится активным, а метод «applicationDidBecomeActive» в AppDelegate называется. Следовательно, вы можете вызвать удаленное уведомление в методе didReceiveRemoteNotification в приложенииDidBecomeActive.

Даже вы можете обрабатывать push-уведомления, когда приложение закрывается. например, перейти к конкретному viewController, didFinishLaunchingWithOptions содержит словарь, который содержит полезную нагрузку уведомления, когда приложение завершено и получено push-уведомление. Это можно сделать как . `.

if (launchOptions != nil)
{
    // opened from a push notification when the app is closed

 NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (userInfo != nil)
   {

    }
}
else
{
    // opened app without a push notification.
}`

надеюсь, это сработает :)

person MayankSengar    schedule 02.02.2018

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

person Abhinav    schedule 11.09.2015