Обновить счетчик значков в Swift

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

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. Кто-нибудь знает как это исправить?

4 ответов


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

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

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

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


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

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

var badgeCount = 0 

 UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount

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

UIApplication.sharedApplication().applicationIconBadgeNumber = 0

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

увеличить номер значка

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

Сбросить Номер Жетона

  1. в моем случай, я должен сбросить все количество значков после открытия приложения. Итак, я установил UIApplication.sharedApplication().applicationIconBadgeNumber = 0 на didFinishLaunchingWithOptions of AppDelegate. Также я сбросил счетчик в памяти.

ни один из этих ответов не является недействительным.

вам нужно смотреть на свой Push-код, а не на AppDelegate

из документов разбора:

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.