我查看了以下问题:在午夜更新应用程序徽章,选项:应用程序未启动或在后台,徽章数字可能会减少、当通知到达时更改应用程序图标徽章、推送通知徽章计数不更新、应用程序关闭时更新徽章图标 和其他许多问题,但我的问题是当应用程序在后台运行并收到推送通知时,应用程序徽章图标没有更新。
我已经检查了所有可能性。我的代码是:
我已经检查了所有可能性。我的代码是:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
UIApplicationState appState = UIApplicationStateActive;
if ([application respondsToSelector:@selector(applicationState)]) {
appState = application.applicationState;
}
for (id key in userInfo) {
NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
}
NSLog(@"remote notification: %@",[userInfo description]);
[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo valueForKey:@"aps"] valueForKey:@"badge"] integerValue];
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive)
{
NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@""
message:message
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
}
当应用程序在前台运行时,它能够正常显示提示信息。但是当应用程序在后台运行时,无论何时都不会发生任何事件,也不会更新应用程序的徽章图标。我已经按照iOS 7.1:推送通知徽章更新问题所示设置了后台模式,并且测试表明应用程序徽章图标在前台运行时能够正确接收并在NSLog中打印。我需要将未读消息设置为应用程序的徽章图标,在应用程序进入后台运行后也能正常工作,但是当新的推送通知到来时,它应该被更新。请给我建议。