开博第一天,我们来讲讲推送

   很久以前纪开始想开通博客了,可是一直没有时间,并且自己也算是一个比较贪玩的人,导致自己一直也就是对于博客这个事也是想想,没有付诸行动.最近,空闲时间很多,并且看了很多文章,导致自己也跃跃欲试,想和各位博友分享下我的心得.

   记得以前刚接触学习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)    收藏  举报

导航