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:
- Użytkownik nie jest w aplikacji
- powiadomienia push odebranego
- Nie odznaka została wyświetlona na ikonie aplikacji, po powrocie do ekranu głównego (zgodnie z oczekiwaniami)
- otrzymaniu Innym powiadomienia Push
- 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.
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
Wysyłam numer identyfikacyjny +1 za inkrement w moim api. –