2015-04-24 22 views
10

W poniższym kodzie mam (2) w ikonę znaczek natychmiast po aplikacji kompilacji:Aktualizacja licznik odznaka w Swift

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

Próbowałem kolejny wariant: zainicjowany nowy var badgeCount = 0 i później:

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

Ale kiedy otrzymuję nowe powiadomienia, nie aktualizuje się do +1. Czy ktoś wie, jak to naprawić?

Odpowiedz

11

Nie zaktualizuje numeru identyfikatora za pomocą tej metody, chyba że aplikacja jest rzeczywiście otwarta. Jeśli chcesz zaktualizować numer identyfikatora po otrzymaniu powiadomienia, musisz ustawić właściwość Znaczek powiadomienia push json na żądany numer.

Jeśli, jeśli wysyłasz zwykłą wiadomość (nie używając json), jest przełącznik, aby zwiększyć numer identyfikacyjny, po prostu zaznacz to. Jeśli używasz JSON następnie użyj:

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

Uwaga, jeśli nie chcesz, aby wysłać to z serwera, można również wysłać go z jednego urządzenia do drugiego z wykorzystaniem klienta naciśnięciem analizowania, przejdź do swojej ustawienia w aplikacji na Parse.com i włączyć "push klienta", możesz następnie wysłać powyższy Json do urządzenia innego użytkownika.

+0

jak mogę wysłać go z serwera? Jak mogę się dowiedzieć, ile powiadomień jest nieprzeczytanych? –

+0

Wygląda na to, że używasz parse.com, prawda? Jeśli, jeśli wysyłasz zwykłą wiadomość (nie używając syna), jest przełącznik, aby zwiększyć numer identyfikacyjny, po prostu zaznacz to. Jeśli używasz JSON następnie użyj: { "aps": { "wpis": "Test powiadomienia push" "dźwięk": "yourSound.aiff" "Badge": "numberYouNeed" } – Swinny89

+0

Nie, używam Pase.com. Czy możesz mi powiedzieć, jak to zrobić? Zwiększ wartość odznaki –

8

Ilekroć kod jest kompilowany, pokazuje ikonę znaczka, która była wcześniej zapisana w Twojej aplikacji. Jeśli w aplikacji nie ustawisz ikony znaczka = 0, pokaże się numer ikony znaczka w aplikacji za każdym razem, gdy ją skompilujesz lub wejdziesz w stan tła.

Teraz do problemu, należy użyć ikonę odznakę jako

var badgeCount = 0 

UIApplication.sharedApplication().applicationIconBadgeNumber = ++badgeCount 

Również kiedy skończysz swoje zadanie uczynić ikonę odznakę jako 0 w przeciwnym razie to pokaże się ikona odznakę w swojej aplikacji

UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
+0

Wklejam go wewnątrz 'didRegisterForRemoteNotificationsWithDeviceToken' jak:' let notif = UIApplication.sharedApplication() notif.applicationIconBadgeNumber = ++ badgesCount installation.saveInBackground() 'i nic więcej =/ –

+0

jeśli nie zrobisz ikony znaczka = 0 to pokaże cały czas –

+0

Powoduje, że jest równa 0 –

4

Pracowałem nad podobnym scenariuszem i ostatecznym rozwiązaniem, które znalazłem, by zwiększyć i zresetować numery znaczków.

Odznaka Przyrost liczby

  1. zawsze zapisać liczbę numer odznaka w pamięci (NSUserDefaults)
  2. Za każdym razem muszę ustawić powiadomienia, mam aktualny numer karty identyfikacyjnej przyrost tego i ustawić ten numer na .applicationIconBadgeNumber i zaktualizuj licznik w pamięci.

reset Odznaka Ilość

  1. W moim przypadku muszę zresetować cały licznik badge raz aplikacja jest otwarta. Dlatego ustawiłem UIApplication.sharedApplication().applicationIconBadgeNumber = 0 w didFinishLaunchingWithOptions z AppDelegate. Zresetowałem także licznik w pamięci.
+0

Czy możesz podać kompletny kod w Sift 3+, dziękuję –

-1

Żadna z tych odpowiedzi nie jest już ważna.

Musisz być patrząc na kodzie Push, nie Twój AppDelegate

Od docs analizowania:

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.