2015-04-24 1 views
10

С помощью следующего кода я получаю (2) в значок значок сразу после приложения компиляции:Update счетчик значок в Swift

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    let installation = PFInstallation.currentInstallation() 
    installation.setDeviceTokenFromData(deviceToken) 
    installation.badge = 2 
    installation.saveInBackground() 
} 

я сделал попробовать следующий вариант: инициализирован новый var badgeCount = 0 и позже:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    badgeCount++ 
    let installation = PFInstallation.currentInstallation() 
    installation.setDeviceTokenFromData(deviceToken) 
    installation.badge = badgeCount 
    installation.saveInBackground() 
} 

Но когда я получаю новые уведомления, он не обновляется до +1. Кто-нибудь знает, как это исправить?

ответ

11

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

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

{ 
    "aps": { 
     "alert": "Test Push Notification", 
     "sound": "yourSound.aiff", 
     "Badge": "desiredNumber" 
    } 
} 

Пожалуйста, обратите внимание, что если вы не хотите, чтобы отправить его с сервера, вы можете также отправить его от одного устройства к другому с использованием клиентом толчка Parse, перейдите в ваш настройки в приложении на Parse.com и включить «push client», вы можете отправить вышеперечисленный Json на другое устройство пользователя.

+0

как я могу отправить его с сервера? Как узнать, сколько уведомлений непрочитано? –

+0

Похоже, вы используете parse.com правильно? Если вы, если вы отправляете нормальное сообщение (не используя сына), есть переключатель для увеличения номера значка, просто отметьте его. Если вы используете JSon затем использовать это: { "ДП": { "предупреждение": "Test Push Notification", "звук": "yourSound.aiff", "Знак": "numberYouNeed" } – Swinny89

+0

Нет, я использую Pase.com. Можете ли вы рассказать мне, как это сделать? Увеличьте значение значка –

8

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

Теперь для вашей проблемы, используйте значок значок в виде

var badgeCount = 0 

UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount 

Кроме того, когда вы сделали с вашей задачей сделать значок значок в 0 в противном случае он будет показывать значок значок в приложении

UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
+0

Я вставляю его внутри 'didRegisterForRemoteNotificationsWithDeviceToken' как:' let notif = UIApplication.sharedApplication() notif.applicationIconBadgeNumber = ++ badgesCount installation.saveInBackground() 'и ничего лишнего =/ –

+0

, если вы не делаете значок значка = 0 it будет отображаться все время –

+0

Я делаю это равным 0 –

4

Я работал над подобным сценарием и окончательным решением, которое я нашел, чтобы увеличить и сбросить номера значков.

Increment Знак номер

  1. Я всегда сохраняю счетчик числа жетонов в памяти (NSUserDefaults)
  2. Каждый раз, когда я должен установить уведомление, я получаю текущий значок номер приращения, и установить, что число на .applicationIconBadgeNumber и обновить счетчик в памяти.

Сброс Знак номер

  1. В моем случае, я должен сбросить все количество жетонов, как только приложение открыто. Поэтому я установил UIApplication.sharedApplication().applicationIconBadgeNumber = 0 в didFinishLaunchingWithOptions из AppDelegate. Также я возвращаю счет в памяти.
+0

Можете ли вы дать некоторый полный код в Sift 3+, спасибо –

-1

Ни один из этих ответов больше не действителен.

Вы должны смотреть на ваш Push-код, а не ваш AppDelegate

Из документов Parse:

badge: (iOS/OS X only) 
the value indicated in the top right corner of the app icon. 
This can be set to a value or to Increment in order to increment the current value by 1. 

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

  • Нет связанных вопросов^_^