2012-12-07 1 views
5

Ich arbeite an Push-Benachrichtigung in iPhone. wenn ich eine Push-Benachrichtigung erhalte, wird 1 auf meinem Anwendungssymbol angezeigt, beim nächsten Mal 2,3,4. Wenn ich die Anwendung öffne, ist 0. Das nächste Mal sollte es 1,2,3,4 sein ... aber es zeigt die letzte Nummer und +1. Ich möchte Push-Benachrichtigung Abzeichen nach der offenen Anwendung zurücksetzen. Ich sende +1 vom städtischen Luftschiff.Klare Push-Benachrichtigung Abzeichen nach Inkrement

und es funktioniert nicht für mich.

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 
[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
+0

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

+0

Ich sende Badge Nummer +1 für Inkrement in meiner API. –

Antwort

0

Ich habe Urban Airship verwendet und hatte dieses Problem schon einmal. Sie zeigen den Code nicht an, aber ich gehe davon aus, dass Sie beim Eintreffen einer Benachrichtigung die Nummer des Anwendungsausweises auf das übertragen, was das städtische Luftschiff Ihnen gibt, tun Sie das nicht. Lassen Sie die Anwendung selbst damit umgehen, wenn eine Remote-Benachrichtigung eingeht, lassen Sie sie automatisch inkrementieren. Wenn dies nicht der Fall ist, könnte es sein, dass Sie auf der Seite des städtischen Luftschiffs eine Ausweisnummer festlegen, die mit dem Push gesendet wird. Senden Sie keine Ausweisnummer mit der Push-Benachrichtigung, lassen Sie diesen Teil außen vor, iOS sollte den Ausweis automatisch von der aktuellen Ausweisnummer erhöhen.

3

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:

  1. Der Nutzer ist in App
  2. Push-Benachrichtigungen
  3. Kein Abzeichen angezeigt wurde auf App-Symbol empfangen werden, wenn auf dem Startbildschirm (wie erwartet)
  4. Ein weiterer Push-Benachrichtigung
  5. Badge angezeigte Nummer größer als 1
  6. 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.

+0

Ich habe das gleiche Problem. Ich habe deine Vorschläge ausprobiert, aber es funktioniert nicht für mich. Kannst du mir bitte helfen, es zu reparieren? Bitte werfen Sie einen Blick auf meine Frage hier: http://stackoverflow.com/questions/20073212/reset-urbanairship-badge-count –

+0

Ich bin mir nicht sicher, welche anderen Informationen ich hinzufügen kann. Der Code, den Sie oben sehen, funktioniert für mich. – Moebius