#iphone #ios4 #apple-push-notifications
#iPhone #ios4 #apple-push-уведомления
Вопрос:
У делегата моего приложения для iPhone настроены все push-уведомления:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
for (id key in userInfo) {
NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
}
}
Теперь я запускаю его, затем приостанавливаю, нажав кнопку «Домой». Затем я отправляю уведомление на устройство, и уведомление получено. Появится диалоговое окно с двумя кнопками — «Закрыть» и «Просмотреть». Теперь, когда я нажимаю «Просмотреть», приложение возобновляется, и делегату отправляется уведомление didReceiveRemoteNotification.
Но если я нажму «Закрыть», приложение останется в фоновом режиме. Если я затем вручную запущу приложение, ни «didReceiveRemoteNotification», ни «didFinishLaunchingWithOptions» не будут отправлены. Итак, где моя полезная нагрузка? Как мне получить полезную нагрузку в этом случае?
Ответ №1:
Если пользователь закроет уведомление и запустит приложение, используя значок приложения, вы больше не получите полезную нагрузку .. тогда она потеряна навсегда.
Это описано на http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html в разделе «Обработка локальных и удаленных уведомлений».
Также обратите внимание, что сервер сохраняет для пользователя только одно уведомление о вашем приложении. Если устройство отключено и ваше уведомление не получено, но вы отправляете другое, первое никогда не дойдет до пользователя, потому что оно заменяет первое.