#iphone #apple-push-notifications
#iPhone #apple-push-уведомления
Вопрос:
У меня есть приложение, которое использует PUSH. Но у меня есть одна проблема, когда приложение неактивно / в фоновом режиме. Когда приходят PUSH-сообщения и пользователь нажимает «Закрыть», значок устанавливается на значок приложения.
Но я также хочу установить значок на TabBarItem. У меня есть этот код, который сохраняет 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];
}
}
Мой код для обработки нажатия, когда приложение активно, работает нормально, и значки устанавливаются как на иконке приложения, так и на панели вкладок.
Кто-нибудь знает, что не так?
Заранее спасибо!
Комментарии:
1. Я почти уверен, что вы не получите уведомление didReceiveRemoteNotification, если приложение не активно. Или при нажатии открыть в предупреждении
Ответ №1:
Если приложение неактивно, 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;
}