Обрабатывать удаленные уведомления APNS в фоновом режиме - PullRequest
7 голосов
/ 29 сентября 2011

Я реализовал все рекомендуемые методы в AppDelegate, чтобы получить работающую службу удаленных уведомлений.

Я могу принять их во время работы, при запуске и при выключенном состоянии.

Но есть проблема, поскольку я не могу работать со многими полученными уведомлениями в фоновом режиме. Я могу работать только с последним уведомлением.

Какое руководство рекомендуется сделать для этого? Как я могу получить все уведомления, полученные в фоновом режиме? Разрешается ли это только посредством ручного вызова моего поставщика услуг (отправитель данных apns)?

Ответы [ 3 ]

6 голосов
/ 19 декабря 2011

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

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

3 голосов
/ 19 декабря 2011

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

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

3 голосов
/ 29 сентября 2011

Не уверен, поможет ли это, но если вы просто хотите узнать, сколько уведомлений вы пропустили, находясь в фоновом режиме. Вы можете создать переменную, которая содержит номер уведомления, и сохранять его в приложении каждый раз, когда вы обрабатываете уведомление. Когда вы выходите из фона и получаете новое уведомление, вы можете вычесть новый номер из сохраненного номера, чтобы узнать количество пропущенных уведомлений. Я не думаю, что есть способ, которым iOS может предоставить вам полные данные, связанные со всеми устройствами уведомлений, полученными, когда приложение было в фоновом режиме.

...