любой вариант, чтобы узнать, если приложение Apple получит push-уведомление? - PullRequest
7 голосов
/ 16 марта 2012

Я создаю приложение xcode, которое получает push-уведомления, основная проблема в том, что push-уведомление очень важно для меня. поэтому я хочу проверить, доставлено ли push-уведомление на устройство с установленным приложением, я понимаю, что если на iphone нет подключения к Интернету / 3G, push-уведомление не попадает на устройство.

как я могу проверить, получает ли устройство уведомление или нет? как я могу проверить, успешно ли APNS доставил push-уведомление?

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

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

любая идея ??

Ответы [ 5 ]

6 голосов
/ 10 апреля 2014

В iOS7 у вас есть новый метод под названием application: didReceiveRemoteNotification: fetchCompletionHandler:, который вы, вероятно, могли бы использовать для своей задачи.От Документы Apple :

Реализуйте этот метод, если ваше приложение поддерживает фоновый режим удаленного уведомления.... При получении push-уведомления система отображает уведомление для пользователя и запускает приложение в фоновом режиме (при необходимости), чтобы оно могло вызвать этот метод.Используйте этот метод для загрузки любых данных, связанных с push-уведомлением.Когда ваш метод завершен, вызовите блок в параметре обработчика.

В отличие от приложения: didReceiveRemoteNotification: метод, который вызывается только во время работы вашего приложения, система вызывает этот метод независимо от состояния вашего приложения.,

1 голос
/ 16 марта 2012

Короткий ответ, вы не можете, так как APNS является одним из способов.Однако, так как приложение может выполнить произвольный код при получении уведомления, вы можете использовать это, чтобы сказать, отправьте запрос http на ваш собственный сервер, когда уведомление будет получено.

1 голос
/ 16 марта 2012

Существует множество причин, по которым push-уведомления могут не доставляться вашему пользователю или не доставляться своевременно. Apple не предоставляет никакого механизма для запроса статуса отправленного вами push-уведомления.

Если ваше приложение в настоящее время работает на устройстве пользователя, и пользователь принимает уведомления для вашего приложения, вы можете реализовать следующий метод в своем делегате приложения. Он будет вызываться всякий раз, когда получено push-уведомление, и в этом методе вы можете отправить запрос обратно на ваш сервер, чтобы указать, что сообщение было получено. Однако это будет работать только тогда, когда пользователь запускает ваше приложение.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

В целом, похоже, что вы полагаетесь на push-уведомления для чего-то, чего не должны делать. Из Apple Руководство по программированию локальных и push-уведомлений :

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

1 голос
/ 16 марта 2012

Нет способа узнать, доставлено ли уведомление на устройство или нет.APNS - это односторонняя услуга.Если на устройстве отсутствует подключение к Интернету, то сервер APNS будет удерживать последнее уведомление в течение некоторого периода времени, который не указан Apple.Если новое уведомление отправляется в APNS для доставки, тогда старые данные уведомления теряются и заменяются новыми данными, если они не доставлены.Если уведомление доставлено, то на сервере APNS также удаляются старые данные уведомления.

Перейдите по следующей ссылке: Apple Push Notification

Надеюсь, это поможет вам...........

0 голосов
/ 22 марта 2013

Если вы используете JAVAPNS для отправки уведомления APNS, вы можете использовать ниже:

List<PushedNotification> notifications = 
Push.combined("alert", badge, "default", "cert.p12", "certpassword", true, deviceToken);

for (PushedNotification notification : notifications) {
    if (notification.isSuccessful()) { 
       //Push is successful. Do your thing...
    }
    else {
       //Push is not successful. Do your thing...
    }
 } 
...