2012-12-07 14 views
5

Pracuję nad powiadomieniem push w telefonie iPhone. kiedy otrzymuję powiadomienie push, pokazujące 1 na mojej ikonie aplikacji, następnym razem 2,3,4. jeśli otworzę aplikację jej 0. Następnym razem powinien być 1,2,3,4 ... ale pokazuje ostatnią cyfrę i +1. Chcę resetować znaczek powiadomień push po otwartej aplikacji. Wysyłam +1 z miejskiego sterowca.Odznaka powiadomień Push po inkrementacji

i nie działa dla mnie.

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

Lokalnie usuwasz numer identyfikacyjny. Musisz również wyczyścić go z serwera Urban Airship. Nie znam miejskiego sterowca. Ale jestem pewien, że ma interfejs API do resetowania znaczka powiadomienia na serwerze. – EmptyStack

+0

Wysyłam numer identyfikacyjny +1 za inkrement w moim api. –

Odpowiedz

0

Użyłem Urban Airship i już wcześniej miałem ten problem. Nie wyświetlasz kodu, ale zakładam, że po otrzymaniu powiadomienia ustawiasz numer identyfikacyjny aplikacji na to, co przechodzi statek powietrzny, nie rób tego. Po prostu pozwól aplikacji samodzielnie sobie z tym poradzić, kiedy przychodzi powiadomienie zdalne, pozwól mu automatycznie zwiększać się samodzielnie. Jeśli tak nie jest, może być tak, że po stronie sterowca miejskiego ustawiasz numer identyfikacyjny, który ma zostać wysłany. Nie wysyłaj numeru identyfikatora za pomocą powiadomienia push, zostaw tę część na zewnątrz, iOS powinien automatycznie zwiększyć swój znaczek z bieżącego numeru identyfikacyjnego.

3

Używam tego kodu w mojej aplikacji, ponieważ Miejskie Sterowiec (UA) dokumentację powiedział

[UIApplication sharedApplication].applicationIconBadgeNumber = 0; 
[[UAPush shared] resetBadge]; 

ale to nie działa, znaczek na ikonie aplikacji ciągle zwiększany. Widziałem kilka postów w tym numerze na forach UA i nie dali oni jednoznacznej odpowiedzi.

EDIT # 1:

Otrzymałem następującą odpowiedź z technikiem w UA z następujących wskazówek, które pracowały wielkie:

Co chcesz zrobić, to upewnić się, że w didFinishLaunchingWithOptions: (NSDictionary *) launchOptions metoda, do której dzwonisz, co następuje:

[[UAPush shared] setAutobadgeEnabled:YES]; 
[[UAPush shared] resetBadge];//zero badge on startup 

a także zadzwonić [[UAPush shared] resetBadge]; w następujących metod, a także:

applicationDidBecomeActive:(UIApplication *)application 

i

didReceiveRemoteNotification:(NSDictionary *)userInfo 

Technik również wspomnieć, że przypisywanie 0 do applicationIconBadgeNumber nie jest konieczne, więc wziąłem go. Nadal działa pięknie.

EDIT # 2:

skończyło się na konieczności modyfikowania aplikację: didReceiveRemoteNotification: aby zawierać wezwanie do UA w handleNotification: applicationState: metoda:

-(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]; 
} 

bo byłem problem z następującym scenariuszem:

  1. Użytkownik nie jest w aplikacji
  2. powiadomienia push odebranego
  3. Nie odznaka została wyświetlona na ikonie aplikacji, po powrocie do ekranu głównego (zgodnie z oczekiwaniami)
  4. otrzymaniu Innym powiadomienia Push
  5. Odznaka wyświetlona liczba większa niż 1

Zgodnie z powyższą modyfikacją ten scenariusz jest obsługiwany. Domyślam się, że musisz poinformować UA, że powiadomienie jest obsługiwane po odebraniu, a aplikacja działa na pierwszym planie.

+0

Mam ten sam problem. Próbowałem twoich sugestii, ale to nie działa dla mnie. Czy możesz mi pomóc to naprawić? Proszę spojrzeć na moje pytanie tutaj: http://stackoverflow.com/questions/20073212/reset-urbanairship-badge-count –

+0

Nie jestem pewien, jakie inne informacje mogę dodać. Kod, który widzisz powyżej, działa dla mnie. – Moebius

Powiązane problemy