Ich benutze diesen Code in meiner Anwendung, weil das Urban Airship (UA) Dokumentation sagte
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UAPush shared] resetBadge];
aber es funktioniert nicht, das Abzeichen auf dem App-Symbol hält erhöht wird. Ich habe ein paar Beiträge zu diesem Thema in UA's Foren gesehen und sie haben keine klare Antwort gegeben.
EDIT # 1:
Ich erhielt folgende Antwort von einem Support-Techniker mit den folgenden Vorschlägen bei UA, die große gearbeitet:
Was Sie tun möchten, stellen Sie sicher, dass in Ihrem ist didFinishLaunchingWithOptions: (NSDictionary *) launchOptions Methode, rufen Sie die folgende:
[[UAPush shared] setAutobadgeEnabled:YES];
[[UAPush shared] resetBadge];//zero badge on startup
und rufen auch [[UAPush] freigegeben] resetBadge]; in den folgenden Methoden auch:
applicationDidBecomeActive:(UIApplication *)application
und
didReceiveRemoteNotification:(NSDictionary *)userInfo
Der Techniker erwähnte auch, dass 0 bis applicationIconBadgeNumber Zuordnung nicht notwendig ist, so nahm ich es heraus. Funktioniert immer noch schön.
EDIT # 2:
endete ich Anwendung zu modifizieren, mit bis: didReceiveRemoteNotification: applicationState:handleNotification einen Aufruf an UA enthalten Methode:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
// Get application state for iOS4.x+ devices, otherwise assume active
UIApplicationState appState = UIApplicationStateActive;
if ([application respondsToSelector:@selector(applicationState)])
{
appState = application.applicationState;
}
[[UAPush shared] handleNotification:userInfo applicationState:appState];
[[UAPush shared] resetBadge];
}
, weil ich ein Problem mit dem folgenden Szenario hat:
- Der Nutzer ist in App
- Push-Benachrichtigungen
- Kein Abzeichen angezeigt wurde auf App-Symbol empfangen werden, wenn auf dem Startbildschirm (wie erwartet)
- Ein weiterer Push-Benachrichtigung
- Badge angezeigte Nummer größer als 1
empfangen Rückkehr
Mit der obigen Modifikation wird dieses Szenario behandelt. Ich denke, Sie müssen UA mitteilen, dass die Benachrichtigung behandelt wird, wenn eine empfangen wird und die App im Vordergrund ausgeführt wird.
Sie löschen die Ausweisnummer lokal. Sie müssen es auch vom Urban Airship Server löschen. Ich kenne Urban Airship nicht. Aber ich bin sicher, dass es eine API hat, um das Benachrichtigungsabzeichen auf dem Server zurückzusetzen. – EmptyStack
Ich sende Badge Nummer +1 für Inkrement in meiner API. –