开博第一天,我们来讲讲推送
很久以前纪开始想开通博客了,可是一直没有时间,并且自己也算是一个比较贪玩的人,导致自己一直也就是对于博客这个事也是想想,没有付诸行动.最近,空闲时间很多,并且看了很多文章,导致自己也跃跃欲试,想和各位博友分享下我的心得.
记得以前刚接触学习ios推送机制的时候,ios和安卓推送是完全不一样的.安卓的推送是程序自己进行的.而ios是由系统进行,所以ios程序,在你退出的时候,就终止了运行了,除了音乐等个别程序.那ios如何进行推送呐?今天我向写这个,一个是我觉得推送对于ios开发来说是很重要的一环,一个也是为了备忘,还有就是再让自己复习一遍.今天主要是本地推送.
首先,需要设置本地推送的内容时间和音乐等;
UILocalNotification *lacalnot = [[UILocalNotification alloc] init];//初始化本地通知
NSDate *date = [NSDate date];
lacalnot.fireDate = [date dateByAddingTimeInterval:10];//这两步是为了获取时间,在进入程序时的时间基础上延后十秒,方面进行测试,实际需要根据需求来设置
lacalnot.timeZone = [NSTimeZone defaultTimeZone];//设置时区
lacalnot.repeatInterval = 0;//0表示不重复,只提示一次
lacalnot.alertBody = @"hello,world"; //提示内容
lacalnot.alertAction = @"推送";//推送的标题
lacalnot.soundName = UILocalNotificationDefaultSoundName; //选择音效 ,这个是系统默认的音效
声音 需要.caf格式的音乐 长度在30秒以下
lacalnot.applicationIconBadgeNumber = 99;//角标,根据需求设置
首先,我们需要向系统注册通知,在ios8以前和ios8注册通知也不一样了.所以我们需要先判断版本
float sysver = [[[UIDevice currentDevice] systemVersion] floatValue];
if (sysver >= 8.0) {
//8.0以上版本通知
UIUserNotificationSettings *notset = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notset];
[[UIApplication sharedApplication] scheduleLocalNotification:lacalnot];//注册本地通知
}else{
//8.0以下版本通知
[[UIApplication sharedApplication] scheduleLocalNotification:lacalnot];
}
这个就已经完成注册了.
还有几个代理方法,
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification//接受到本地通知,你可以在其中进行相应操作;
远程推送是需要由苹果服务器来推送,苹果不允许其他服务器向苹果手机推送消息,所有我们需要向系统注册推送,在注册成功后得到token值,然后让自己服务先向苹果服务器发送推送消息和token值,由苹果服务器来进行推送.,下面是具体的流程图
,
先向系统注册远程推送,首先还是判断版本
float sysver = [[[UIDevice currentDevice] systemVersion] floatValue];
NSLog(@"%.2f", sysver);
if (sysver >= 8.0) {
//8.0以上版本通知
UIUserNotificationSettings *notset = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notset];
[[UIApplication sharedApplication] registerForRemoteNotifications];//注册远程推送通知
}else{
//8.0以下版本通知
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIUserNotificationTypeSound | UIRemoteNotificationTypeBadge];
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@", [deviceToken description]);
}//注册成功,返回token值.
具体可以使用信鸽,个推等来进行测试,远程推送只有真机上才可以测试.
今天第一次发博客,希望大家包涵.
posted on 2015-02-12 11:05 myselfxiaoxiao 阅读(221) 评论(0) 收藏 举报
浙公网安备 33010602011771号