iphone: установить значок на tabbarItem при получении сообщения PUSH, когда приложение неактивно - PullRequest
2 голосов
/ 05 мая 2011

У меня есть приложение, которое использует PUSH.Но у меня есть одна проблема, когда приложение неактивно / в фоновом режиме.Когда приходят сообщения PUSH и пользователь нажимает кнопку Закрыть, значок устанавливается на значке приложения.

Но я также хочу установить значок на вкладке BarItem.У меня есть этот код, который сохраняет PUSH

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
  if (application.applicationState == UIApplicationStateInactive) {
    //Save the PUSH until the app is active.
    newPush = [userInfo copy];
  }
}

И в:

- (void)applicationDidBecomeActive:(UIApplication *)application

У меня есть следующий код:

//Check if there is new PUSH messages.
if (newPush!=nil) {
  //There is a new PUSH!
  NSInteger badge = [[[newPush objectForKey:@"aps"] objectForKey:@"badge"] intValue];
  if (badge > 0) {
    //Set badge-numbers to 'badge'
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge];
    [[[[[self tabBarController] tabBar] items] objectAtIndex:3] setBadgeValue:[NSString stringWithFormat:@"%d",badge]];
  }
  else {
    //Set badge-numbers to zero
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    [[[[[self tabBarController] tabBar] items] objectAtIndex:3] setBadgeValue:nil];    
  }
}

Мой код для обработки PUSHкогда приложение активно работает и значки установлены как на значке приложения, так и на вкладке BarItem.

Кто-то знает, что не так?

Заранее спасибо!

1 Ответ

0 голосов
/ 06 мая 2013

Если приложение неактивно, didReceiveRemoteNotification не выполняется.В этом случае единственным способом получения данных уведомления может быть ваше приложение, если пользователь нажимает на уведомление, чтобы открыть приложение.Затем, когда приложение запущено, вы можете получить данные уведомления в application:didFinishLaunchingWithOptions:, используя этот код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {

    NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];

    //Accept push notification when app is not open
    if (remoteNotif) {      
        [self handleRemoteNotification:application userInfo:remoteNotif];
        return YES;
    }

    return YES;
}
...