创建App ID
要实现远程推送的功能,需要我们创建AppID,推送证书配置等相关操作,我们首先登陆https://developer.apple.com 进入开发者中心
![](https://img.haomeiwen.com/i1421018/f77d048d3e6970bb.png)
![](https://img.haomeiwen.com/i1421018/f5edea3517540603.png)
点击+号添加之后需要我们输入Name和Boundle ID,那么我们自己设定 但是boundle ID 就要和我们的工程的boundle identifier要是一样的
![](https://img.haomeiwen.com/i1421018/03b91338ada228ea.png)
![](https://img.haomeiwen.com/i1421018/d5d4d173e3361b1e.png)
然后需要我们在App Serviers里面勾线Push Notification选项->continue->submit->done此时我们的APPID就创建成功了
![](https://img.haomeiwen.com/i1421018/dea85ef46927a40a.png)
创建推送证书和描述文件
由于只是测试我们选择Developement
![](https://img.haomeiwen.com/i1421018/d86a65f4574fc269.png)
->
![](https://img.haomeiwen.com/i1421018/ece9c954482567b7.png)
->App ID就是我们上面创建的App ID->点击continue->continue
![](https://img.haomeiwen.com/i1421018/ffd45be6d23d345c.png)
在Generate your certificate.页面会提示我们上传一个CSR文件,那么怎么去生成一个CSR文件呢?
![](https://img.haomeiwen.com/i1421018/e54ac7b98c174759.png)
这个时候我们就需要我们的钥匙串了,打开钥匙串
![](https://img.haomeiwen.com/i1421018/b67f1fbdd6ed172e.png)
接下来 电子邮件地址必填 我们也可以随便填 保存到桌面上,完成
![](https://img.haomeiwen.com/i1421018/8ee9abbac5093612.png)
然后我们点击choose file..上传CSR文件->continue->DownLoad下载到桌面上
接下来我们创建描述文件 点击+创建
![](https://img.haomeiwen.com/i1421018/bb29ea500bd4ad30.png)
选择开发环境->continue
![](https://img.haomeiwen.com/i1421018/149a1f9bd2428e4e.png)
选择我们的App ID ->continue
![](https://img.haomeiwen.com/i1421018/a969d5ee42681959.png)
->
![](https://img.haomeiwen.com/i1421018/7fc7802d417377ea.png)
->
![](https://img.haomeiwen.com/i1421018/0557d47912002bc0.png)
->我们不知道具体是哪一个的话 可以选择全部
![](https://img.haomeiwen.com/i1421018/88d1b02a1b10dda7.png)
->
![](https://img.haomeiwen.com/i1421018/618e86f91179f953.png)
->Continue然后DownLoad
到这里我们的证书和描述文件都已经创建好了 我们双击我们的证书,在钥匙串里面可以查看证书信息,双击描述文件 加到Xcode里面Build Settings->Provisioning Podfile 选择我们的证书,code single identifier 选择我们的开发证书
![](https://img.haomeiwen.com/i1421018/6193de61d98cb066.png)
->
![](https://img.haomeiwen.com/i1421018/a3801908f5ec6ba8.png)
推送的实现
一个应用程序要想实现推送的话 就需要注册推送通知 远程推送 在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;
}
这个时候运行我们的程序会看到如下提示信息
![](https://img.haomeiwen.com/i1421018/6df9b946462e067d.png)
此时用户点击允许之后 应用程序会向苹果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传递给服务器的时候是需要去掉<>和空格 这些不再啰嗦
![](https://img.haomeiwen.com/i1421018/0c5958428849198d.png)
腾讯信鸽第三方的推送服务
下面我们来探讨一下 使用腾讯第三方的信鸽进行推送是怎么实现的
![](https://img.haomeiwen.com/i1421018/a9c168be96b7eb6b.png)
->点接入应用->点应用配置,我们会看到应用配置里面有我们应用的各种信息 ,而且需要我们上传开发证书
![](https://img.haomeiwen.com/i1421018/66430916e5b77601.png)
点击上传我们看到需要的是一个pem格式的证书 那么我们怎么获取pem格式的证书呢?这时候我们的好朋友钥匙串又粉墨登场了
![](https://img.haomeiwen.com/i1421018/3bf668ade205676c.png)
->
![](https://img.haomeiwen.com/i1421018/598984d3ee883ba8.png)
->
![](https://img.haomeiwen.com/i1421018/34aee29edcbb3ea0.png)
此时我们就获得了一个.p12的文件 我们把.p12转化成pem格式文件的话 需要用到终端我们切换到桌面上 在终端输入:openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes 并且将桌面上p12的名字进行替换 然后回车,这个时候需要我们输入一个密码 这个密码就是我们进行导出p12文件是的密码 然后在回车 此时.pem的文件就已经生成好了 我们在信鸽的配置平台里面点击上传就可以了 上传成功的话 会显示
![](https://img.haomeiwen.com/i1421018/61801a7cdfed6dfe.png)
开发证书验证通过后 在配置平台会显示验证通过
我们需要在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);
}
![](https://img.haomeiwen.com/i1421018/645269fe357752d2.png)
接下来我们就可以进行推送了 我们点->创建通知(信鸽配置平台上),推送环境我们选开发环境就行了 其他的自己设定
![](https://img.haomeiwen.com/i1421018/8e8cabddd34204b8.png)
点击-> 确认推送之后就可以进行推送了 ,此时测试机可以收到信息,但是用户点击了信息之后如何处理呢?需要执行-(void)application:(UIApplication *)application didReceiveRemoteNotification:方法 userInfo里面就是我们推送的信息
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
NSLog(@"推送内容是:%@",userInfo);
}
网友评论