在ios8中,直接設置application badge value會出錯
1 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:count];
曝出”Attempting to badge the application icon but haven't received permission from the user to badge the application
“的錯誤。
原因是因為在ios8中,設置應用的application badge value需要得到用戶的許可。使用如下方法咨詢用戶是否許可應用設置application badge value
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
程序運行時,會彈出提示框給用戶
iOS8中新增了通知授權后的回調:
– (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
問題解決:
把所有
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中的-[UIApplication setApplicationIconBadgeNumber:]
移到
– (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
回調中