[iuud8]ios不同版本下推送本地通知
2016-04-13 17:33
387 查看
“推送很重要,无论是本地还是服务器”。虽然我看不出来,但毕竟产品经理强烈那么说,那就当他很重要好了。。。。
本地推送之前首先需要申请权限,在ios8以后与ios8以后是两套不同的API
//推送
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0)
{
if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone) {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeSound];
}
}
else
{
if ([[UIApplication sharedApplication]currentUserNotificationSettings].types==UIUserNotificationTypeNone) {
[[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
}
把这段话注册到
以上就是请求权限的不同版本处理!!!
发送推送的时候就不需要在区别系统版本了,可以一套代码解决
//定义本地通知对象
UILocalNotification *notification=[[UILocalNotification alloc]init];
//设置调用时间
NSDate *now = [NSDate date];
notification.fireDate=[now dateByAddingTimeInterval:10.0];//通知触发的时间,10s以后
//使用本地时区
notification.timeZone=[NSTimeZone defaultTimeZone];
//通知重复次数
notification.repeatInterval=1;
//设置通知属性
notification.alertBody=@"殿下,您的体力回满了。"; //通知主体
notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数
notification.alertAction=@"打开应用"; //待机界面的滑动动作提示
// notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片
notification.soundName= UILocalNotificationDefaultSoundName;//通知声音
notification.applicationIconBadgeNumber = [[[UIApplication sharedApplication] scheduledLocalNotifications] count]+1;
//设置用户信息
//add key 给这个通知增加key 便于半路取消。nfkey这个key是我自己随便起的。
// 假如你的通知不会在还没到时间的时候手动取消 那下面的两行代码你可以不用写了。
NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:100],@"nf_powerFull",nil];
[notification setUserInfo:dict];
//调用通知
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
[notification release];
很简单的代码;两点需要注意的
notification.applicationIconBadgeNumber就是应用图标上右上角那个小红点,表示收到的推送数量,因为,我们在启动游戏或者从后台激活游戏的时候,需要重新设置它为0
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];
第二点:
[notification setUserInfo:dict];如果还没开始推送的时候,用户就主动点开应用了,此时如果想主动取消该条推送的话就该用到这条设置的属性了
NSArray *narry=[[UIApplication sharedApplication] scheduledLocalNotifications];
NSUInteger acount=[narry count];
if (acount<1) {
return;
}
for (int i=0; i<acount; i++) {
UILocalNotification *myUILocalNotification = [narry objectAtIndex:i];
NSDictionary *userInfo = myUILocalNotification.userInfo;
NSNumber *obj = [userInfo objectForKey:@"nf_powerFull"];
int mytag=[obj intValue];
if (mytag==100) {
[[UIApplication sharedApplication] cancelLocalNotification:myUILocalNotification];
return;
}
}
这样,我们就可以移除指定的一条推送。当然还有一种简单粗暴的方法:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
直接移除掉所有的本地推送。
以上!
本地推送之前首先需要申请权限,在ios8以后与ios8以后是两套不同的API
//推送
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0)
{
if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone) {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeSound];
}
}
else
{
if ([[UIApplication sharedApplication]currentUserNotificationSettings].types==UIUserNotificationTypeNone) {
[[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
}
把这段话注册到
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions函数中去,这样,在程序第一次启动的时候,如果没有通知权限,就是弹出提示,向用户来请求权限;
以上就是请求权限的不同版本处理!!!
发送推送的时候就不需要在区别系统版本了,可以一套代码解决
//定义本地通知对象
UILocalNotification *notification=[[UILocalNotification alloc]init];
//设置调用时间
NSDate *now = [NSDate date];
notification.fireDate=[now dateByAddingTimeInterval:10.0];//通知触发的时间,10s以后
//使用本地时区
notification.timeZone=[NSTimeZone defaultTimeZone];
//通知重复次数
notification.repeatInterval=1;
//设置通知属性
notification.alertBody=@"殿下,您的体力回满了。"; //通知主体
notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数
notification.alertAction=@"打开应用"; //待机界面的滑动动作提示
// notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片
notification.soundName= UILocalNotificationDefaultSoundName;//通知声音
notification.applicationIconBadgeNumber = [[[UIApplication sharedApplication] scheduledLocalNotifications] count]+1;
//设置用户信息
//add key 给这个通知增加key 便于半路取消。nfkey这个key是我自己随便起的。
// 假如你的通知不会在还没到时间的时候手动取消 那下面的两行代码你可以不用写了。
NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:100],@"nf_powerFull",nil];
[notification setUserInfo:dict];
//调用通知
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
[notification release];
很简单的代码;两点需要注意的
notification.applicationIconBadgeNumber就是应用图标上右上角那个小红点,表示收到的推送数量,因为,我们在启动游戏或者从后台激活游戏的时候,需要重新设置它为0
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];
第二点:
[notification setUserInfo:dict];如果还没开始推送的时候,用户就主动点开应用了,此时如果想主动取消该条推送的话就该用到这条设置的属性了
NSArray *narry=[[UIApplication sharedApplication] scheduledLocalNotifications];
NSUInteger acount=[narry count];
if (acount<1) {
return;
}
for (int i=0; i<acount; i++) {
UILocalNotification *myUILocalNotification = [narry objectAtIndex:i];
NSDictionary *userInfo = myUILocalNotification.userInfo;
NSNumber *obj = [userInfo objectForKey:@"nf_powerFull"];
int mytag=[obj intValue];
if (mytag==100) {
[[UIApplication sharedApplication] cancelLocalNotification:myUILocalNotification];
return;
}
}
这样,我们就可以移除指定的一条推送。当然还有一种简单粗暴的方法:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
直接移除掉所有的本地推送。
以上!
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码