Я применил метод UIApplicationDelegate
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
для обработки push-уведомлений, он отлично работает. В некоторых ситуациях мне нужно получить полезную нагрузку push-уведомления. Но иногда этот метод делегирования не вызывается.iOS извлекать полезную нагрузку удаленного уведомления
У меня есть вопрос о получении полезной нагрузки (userInfo
) в этом сценарии:
приложение работает либо в фоновом режиме или не запущен. Приложение получило push-уведомление, отображается баннер, воспроизводится звук, отображается сообщение, значок значка приложения увеличивается, а уведомление push можно увидеть в центрах уведомлений iOS. Если пользователь удаляет уведомление, когда оно отображается или в центре уведомлений, приложение запускается, и вызывается метод didReceiveRemoteNotification:
.
Однако, если пользователь просто нажмите на значок приложения и запустить приложение в нормальных отношениях, метод не вызывается, и я не могу извлечь userInfo
.
От компании Apple documentation on handling push notifications:
Уведомление подается, когда приложение не работает на переднем плане. В этом случае система представляет уведомление, отображая предупреждение, значки значка, возможно, воспроизводит звук и, возможно, отображает одну или несколько кнопок действий для пользователя.
Пользователь вводит пользовательскую кнопку действия в уведомлении iOS 8. В этом случае iOS вызывает любое приложение: handleActionWithIdentifier: forRemoteNotification: completeHandler: или application: handleActionWithIdentifier: forLocalNotification: completeHandler :. В обоих методах вы получаете идентификатор действия, чтобы вы могли определить, какую кнопку пользователь прослушивал. Вы также получаете либо удаленный, либо локальный объект уведомления, чтобы вы могли получить любую информацию, необходимую для обработки действия.
Пользователь вводит кнопку по умолчанию в предупреждении или указывает (или нажимает) значок приложения. Если нажата кнопка действия по умолчанию (на устройстве под управлением iOS), система запускает приложение, и приложение вызывает приложение своего делегата: метод didFinishLaunchingWithOptions: метод, передача в полезной нагрузке уведомления (для удаленных уведомлений) или объект локального уведомления (для местные уведомления). Хотя приложение: didFinishLaunchingWithOptions: не лучшее место для обработки уведомления, получение полезной нагрузки в этот момент дает вам возможность начать процесс обновления до вызова метода обработчика.
Если уведомление является удаленным, система также вызывает приложение: didReceiveRemoteNotification: fetchCompletionHandler :.
Если значок приложения щелкнут на компьютере под управлением ОС X, приложение вызывает метод делегирования делегата: DidFinishLaunching: метод, в котором делегат может получить полезную нагрузку удаленного уведомления. Если значок приложения отображается на устройстве под управлением iOS, приложение вызывает тот же метод, но не предоставляет никакой информации об уведомлении.
Выделенная часть своего рода говорить не существует очевидный способ получить доступ к полезной информации нажимного уведомления таким образом. Так есть способ обойти эту проблему?
Спасибо!
Вы можете использовать молчаливое уведомление? –