Обновить счетчик значков в 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
я работал над аналогичным сценарием и окончательным решением, которое я нашел, чтобы увеличить и сбросить номера значков.
увеличить номер значка
- Я всегда сохраняю количество номеров значков в памяти (
NSUserDefaults
) - каждый раз, когда я должен установить уведомление, я получаю текущее увеличение номера значка и устанавливаю это число на
.applicationIconBadgeNumber
и обновите счетчик в памяти.
Сбросить Номер Жетона
- в моем случай, я должен сбросить все количество значков после открытия приложения. Итак, я установил
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
наdidFinishLaunchingWithOptions
ofAppDelegate
. Также я сбросил счетчик в памяти.
ни один из этих ответов не является недействительным.
вам нужно смотреть на свой 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.