浅谈iOS的消息推送

创建App ID

要实现远程推送的功能,需要我们创建AppID,推送证书配置等相关操作,我们首先登陆https://developer.apple.com 进入开发者中心

浅谈iOS的消息推送_第1张图片

浅谈iOS的消息推送_第2张图片

点击+号添加之后需要我们输入Name和Boundle ID,那么我们自己设定 但是boundle ID 就要和我们的工程的boundle identifier要是一样的


浅谈iOS的消息推送_第3张图片

浅谈iOS的消息推送_第4张图片

然后需要我们在App Serviers里面勾线Push Notification选项->continue->submit->done此时我们的APPID就创建成功了


浅谈iOS的消息推送_第5张图片

创建推送证书和描述文件

由于只是测试我们选择Developement


浅谈iOS的消息推送_第6张图片

->


浅谈iOS的消息推送_第7张图片

->App ID就是我们上面创建的App ID->点击continue->continue
浅谈iOS的消息推送_第8张图片

在Generate your certificate.页面会提示我们上传一个CSR文件,那么怎么去生成一个CSR文件呢?


浅谈iOS的消息推送_第9张图片

这个时候我们就需要我们的钥匙串了,打开钥匙串
浅谈iOS的消息推送_第10张图片

接下来 电子邮件地址必填 我们也可以随便填 保存到桌面上,完成
浅谈iOS的消息推送_第11张图片

然后我们点击choose file..上传CSR文件->continue->DownLoad下载到桌面上
接下来我们创建描述文件 点击+创建
浅谈iOS的消息推送_第12张图片

选择开发环境->continue


浅谈iOS的消息推送_第13张图片

选择我们的App ID ->continue
浅谈iOS的消息推送_第14张图片

->
浅谈iOS的消息推送_第15张图片

->
浅谈iOS的消息推送_第16张图片

->我们不知道具体是哪一个的话 可以选择全部
浅谈iOS的消息推送_第17张图片

->
浅谈iOS的消息推送_第18张图片

->Continue然后DownLoad
到这里我们的证书和描述文件都已经创建好了 我们双击我们的证书,在钥匙串里面可以查看证书信息,双击描述文件 加到Xcode里面Build Settings->Provisioning Podfile 选择我们的证书,code single identifier 选择我们的开发证书
浅谈iOS的消息推送_第19张图片

->
浅谈iOS的消息推送_第20张图片

推送的实现

一个应用程序要想实现推送的话 就需要注册推送通知 远程推送 在iOS8之前和之后的注册方式不一样 所以要做系统版本适配 根据不同的iOS版本 执行不同的注册代码
在APPDelegate里

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//条件编译  // 条件编译指令:根据判断条件,编译不同区块的代码
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
    
    //1 配置远程推送收到消息后的状态:有脚标 有声音 有弹框
    UIUserNotificationSettings *set = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
    
   //2 将配置添加进远程托送的设置中
    [[UIApplication sharedApplication]registerUserNotificationSettings:set];
    
   //3 注册远程推送
    [[UIApplication sharedApplication]registerForRemoteNotifications];
      
#else
    
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];
    
#endif
    return YES;
}

这个时候运行我们的程序会看到如下提示信息


浅谈iOS的消息推送_第21张图片

此时用户点击允许之后 应用程序会向苹果APNS注册,获取令牌,令牌唯一标识当前的设备

//远程推送注册成功后 会执行这个方法 通过改代理将APNS提供的DeviceToken传进APP 进而由APP转发给推送服务器

//从苹果APNS获取Token成功
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    NSLog(@"远程推送能力注册成功,deviceToken:%@",deviceToken);
}

//注册失败(获取Token)的话会执行的方法(设备不具备推送能力)

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
    NSLog(@"远程推送注册失败 原因是:%@",error);
}

//当程序收到远程推送消息后 执行该方法 在这个方法中接收远程推送进来的内容(死亡)

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"推送内容是:%@",userInfo);
}

获取到苹果的Token之后 我们需要把token上传我们的服务器 因为这样 我们的服务器才能告诉苹果APNS需要给那些设备发送推送消息,下面是一张截屏 但此时是2016年,我们把token传递给服务器的时候是需要去掉<>和空格 这些不再啰嗦


腾讯信鸽第三方的推送服务

下面我们来探讨一下 使用腾讯第三方的信鸽进行推送是怎么实现的


浅谈iOS的消息推送_第22张图片

->点接入应用->点应用配置,我们会看到应用配置里面有我们应用的各种信息 ,而且需要我们上传开发证书


浅谈iOS的消息推送_第23张图片

点击上传我们看到需要的是一个pem格式的证书 那么我们怎么获取pem格式的证书呢?这时候我们的好朋友钥匙串又粉墨登场了
浅谈iOS的消息推送_第24张图片

->


浅谈iOS的消息推送_第25张图片

->
浅谈iOS的消息推送_第26张图片

此时我们就获得了一个.p12的文件 我们把.p12转化成pem格式文件的话 需要用到终端我们切换到桌面上 在终端输入:openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes 并且将桌面上p12的名字进行替换 然后回车,这个时候需要我们输入一个密码 这个密码就是我们进行导出p12文件是的密码 然后在回车 此时.pem的文件就已经生成好了 我们在信鸽的配置平台里面点击上传就可以了 上传成功的话 会显示
浅谈iOS的消息推送_第27张图片

开发证书验证通过后 在配置平台会显示验证通过
我们需要在AppDelegate进入信鸽的头文件
#import "XGPush.h"

注册信鸽

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //初始化信鸽
    [XGPush startApp:2200189030 appKey:@"I958DSYJ18GA"];
return YES;
}

此时还没完,我们需要在信鸽配置平台添加一台设备,通过以下方法 我们能过的一个设备的Token

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    [XGPush registerDevice:deviceToken];//信鸽获取Token
    NSLog(@"远程推送能力注册成功,deviceToken:%@",deviceToken);
}
浅谈iOS的消息推送_第28张图片

接下来我们就可以进行推送了 我们点->创建通知(信鸽配置平台上),推送环境我们选开发环境就行了 其他的自己设定


浅谈iOS的消息推送_第29张图片

点击-> 确认推送之后就可以进行推送了 ,此时测试机可以收到信息,但是用户点击了信息之后如何处理呢?需要执行-(void)application:(UIApplication *)application didReceiveRemoteNotification:方法 userInfo里面就是我们推送的信息

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"推送内容是:%@",userInfo);
}

你可能感兴趣的:(浅谈iOS的消息推送)