在iOS 版本中,最新的iOS 8版本与以前其他版本的注册通知方法是不一样的,首先要判断版本号,通过版本号注册不同的通知。
// 判断版本注册不同的通知
if ([[[UIDevicecurrentDevice] systemVersion]floatValue] >= 8.0f) {
// 判断版本号是否大于8.0
[[UIApplicationsharedApplication] registerUserNotificationSettings:[UIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeBadge |UIUserNotificationTypeSound | UIUserNotificationTypeAlertcategories:nil]];
// 注册通知
[[UIApplicationsharedApplication] registerForRemoteNotifications];
}else {
[[UIApplicationsharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];
// 非ios8.0及以上的调用本地通知方法
[selfaddLocationNotification];
}
// iOS8.0以后版本的用户注册通知后(在调用完registerUserNotificationSettings:)调用的方法
-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
[selfaddLocationNotification];
}
// 添加本地通知 (自定义的方法)
- (void)addLocationNotification
{
//创建本地通知对象
UILocalNotification *localNoti = [[UILocalNotificationalloc] init];
// 设置触发时间
localNoti.fireDate = [NSDatedateWithTimeIntervalSinceNow:2.0];
// 重复次数
localNoti.repeatInterval =NSCalendarUnitSecond;
//设置本地通知的属性
//来消息时提示的内容
localNoti.alertBody =@"来消息喽!";
// 提示的角标
localNoti.applicationIconBadgeNumber =1;
//待机界面滑动动作时的提示
localNoti.alertAction =@"打开应用";
//提示声音 不设置为默认
localNoti.soundName =@"msg.caf";
// 调用通知
[[UIApplicationsharedApplication] scheduleLocalNotification:localNoti];
}
在设置上述的代码,点击home键测试,就会看到本地推送通知。
测试过程中会发现软件上提示角标一直存在,设置一下命令:
// 即将进入前台 清除角标
- (void)applicationWillEnterForeground:(UIApplication *)application {
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
这样就可以在打开软件时,让角标清零。