2009-12-21 4 views
23

Я реализовал услугу push для своего приложения, и я думал о значке приложения. Мое приложение - почтовое приложение (sorta), и я хочу уведомить пользователя с помощью push для новых сообщений, добавленных в папку «Входящие», я хочу, чтобы значок = количество новых сообщений в папке «Входящие».Автоматический прирост значка Push-Notification

Я думал о том, чтобы сделать это серверным (провайдером), проверяющим новые сообщения и отправкой номера в качестве значка.

Вопрос: Есть ли способ автоматически увеличивать значок приложения, не вычисляя значение значка на сервере, а затем отправляя его как часть полезной нагрузки push в APSN?

Возможно, есть способ отправить в поле значка JSON некоторую переменную типа «++» или что-то в этом роде. Любой взлом для этого? Или мне нужно идти с системой подсчета на сервер?

+2

Является автоинкрементным еще не представляется возможным? Я создаю приложение для чата под названием [AcaniChat] (https://github.com/acani/AcaniChat). Как и приложение для собственных сообщений iPhone, количество значков равно количеству новых (непрочитанных) сообщений, и вы получаете push-уведомление для каждого нового сообщения. Таким образом, если автоинкремент был возможен, мне не нужно было бы хранить количество значков на токенах устройства на сервере. – ma11hew28

ответ

28

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

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

ОБНОВЛЕНИЕ Март 2014 года: См. Комментарии для возможного обновления. Я не делал толчков через несколько лет, так что не смог проверить это сам.

+0

Вот что я подумал. Я уже думал о системе, но мне показалось, что на этот раз Apple могла бы быть немного умнее - и сама подумала об этом. Спасибо, что поняли. – natanavra

+1

Почему не поддерживать номер значка в приложении путем его кеширования (например, NSUserDefaults) – msk

+2

@MSK Как сохранить номер значка на клиенте для решения этой проблемы? Во всяком случае, вы можете просто сделать «[UIApplication sharedApplication] .applicationIconBadgeNumber', если вы хотите получить номер значка, не нужно кэшировать его в« NSUserDefaults ». – ma11hew28

1

Это возможно, но есть компромисс.

Вы всегда можете отправить непрочитанную сумму как дополнение JSON как часть полезной нагрузки push (push игнорирует ключи, которые явно не понимают). После того, как пользователь откроет приложение, прочитайте это значение и программно настройте значок через свойство UIApplication applicationIconBadgeNumber.

Проблема с этим способом заключается в том, что push корректирует значение значка, даже если пользователь не открывает приложение (т. Е. Когда они получают уведомление, а пользователь нажимает «Отменить» вместо «Просмотр»). В этих случаях ваш значок не изменится, но как только они запустит приложение (если они нажмут «Вид»), ваше приложение сможет установить его правильно.

+1

На самом деле это не ответ ... вы сказали, что я могу добавить его как полезную нагрузку JSON, но это то, что я уже могу сделать, я имел в виду - есть способ автоматически увеличивать значок с каждым нажатием ... Ответ , похоже - нет. Мне нужно будет управлять им на сервере, а затем отправить номер как aps => badge ... Сбросить значок сам всякий раз, когда пользователь попадает в приложение, а также реселлирует счетчик на сервере всякий раз, когда пользователь извлекает данные , Спасибо в любом случае. – natanavra

+0

Другая проблема заключается в том, что, только обновляя счет значка после посещения пользователем приложения, мы теряем возможность привлекать менее активных пользователей. – Zorayr

1

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

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

Для автоматического увеличения значка push на 1 вам необходимо отправить push-сообщение, как показано ниже.

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
string message= "{'badge':'increment'}"; 
pushNotificationService.SendPushMessageToUser(userName,message, new UnityCallBack()) 

N.B: объяснено Образец для Unity/C#, но тот же самый процесс может быть применен на других тоже.

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

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
string deviceToken = "DeviceToken"; 
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforDevice(userName, deviceToken, badges, new UnityCallBack()); 

PushNotificationService pushNotificationService = App42API.BuildPushNotificationService(); // Initializing PushNotification Service. 
string userName = "UserName"; 
int badges = 10; // For clear count make it 0 
pushNotificationService.UpdatePushBadgeforUser(userName, badges, new UnityCallBack()); 

updatePushBadgeforDevice - Этот метод используются для обновления нажимной подсчет жетонов конкретного устройства, зарегистрированного пользователем.

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

-10

Отправить +1 для подсчета значок, который будет автоматически увеличивать количество жетонов на 1.

+0

Это что-то новое в протоколе APNS? Вы сами это испытали? – natanavra

+2

Это совсем не работает. При установке значка на +1 уведомление даже не попадает на устройство. –

Смежные вопросы