iOS中 远程推送简单介绍

        关于iOS的远程推送相信大家可能在测试包括正式推送的时候都会有点头晕,因为有太多的证书 , 包括创建,合成等,让人头疼,尤其是iOS的初学者更是一头雾水,下面我就来介绍一下iOS的远程推送服务的使用,希望能对大家有所帮助;

进入正题

       首先,远程推送要有推送证书与配合该证书的描述文件这是毫无疑问的

       我们进行远程推送的准备工作:

一、证书创建:

       首先进入apple的开发者页面,可直接在浏览器地址栏输入:apple.developer.com  回车即可进入。

       然后点击页面导航条的最后一个条目,(此处忘记截图,抱歉~),由于没有相应的截图,我们直接跳过一定的步骤,直接进入证书与描述文件的创建界面,即下面的页面:

1>首先我们要创建App IDs ,如图所示,点击左侧的AppIDs,接着点击右上角的“+”按钮,进入App IDs的创建界面

为App IDs 起一个名称:(注意不可使用某些特殊字符


二、创建Bundle ID
注意:此处需要创建精确的Bundle ID 不能使用通用的Bundle ID



然后勾选服务后,一直下一步,直到创建App ID 的过程完成



三、App ID 创建完成后,创建远程推送的证书,注意此证书为“推送证书”

与创建App ID的过程相同,同样点击all 之后点击“+”按钮



选择创建证书的类型,选中途中标记的证书类型,此类型即为:远程推送类型的证书 , 继续 下一步



出现如下页面,页面会提示我们需要一个证书的请求文件,而此请求文件使我们自己创建的,由于没有请求文件,所以我们需要暂时将页面最小化,转而去创建证书请求文件,如下图


打开系统的“钥匙串”然后选中 “钥匙串访问” -->  “证书助理” --> “从证书颁发机构请求证书”


点击后即进入 如图界面,邮件地址为我们常用的邮件地址,姓名是自己的姓名,

CA邮件地址 可以不用填写,但是不填写时,必须将下面的“请求是” 选为“存储到磁盘”!找个位置保存一下,便于自己查找即可,

点击“继续” 则证书的请求文件创建成功





创建成功后,即可回到自己的证书请求页面,选择自己刚刚创建证书请求文件,并上传,选择下一步后,推送证书创建成功!点击Download 将证书下载到本地;



四、创建“描述文件”

推送证书创建完毕后,我们需要接着创建证书的“描述文件”,同样点击all ,点击“+”按钮 , 描述文件的类型选择 为 测试类型



选择对应的App ID ,即为自己第一步时创建的App ID ,继续“下一步”,此时会提示你选择测试证书(我们要记得自己选择的测试证书) , 下一步后,勾选测试证书中包含的设备(你测试的设备必须包含在当前测列表中) 继续“下一步”,给文件命名后创建描述文件完成,点击下载到本地

将下载到的证书与描述文件双击打开安装,(此过程会一闪而过)



五、创建工程 :

创建完成后在appDelegate的didFinishLaunchingWithOptions的方法中注册我们的远程推送服务



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    
    //  注册推送服务
    //类型为:badge 角标, sound 声音,alert 弹窗 等
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
    
    
    return YES;
}

然后在AppDelegate中重写系统的三个方法,分别为:

<p>设置完成后先运行一次程序  查看控制台打印的tokenString;将此值赋值一份,将我们的send.php问价用系统的文本编辑器打开  更改其中的  token为自己赋值的值 然后保存,在后面我们将会用到~</p>//  远程推送服务注册成功,并获取苹果服务器返回的token
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
//    NSLog(@"%s , %d | deviceToken = %@" , __FUNCTION__ , __LINE__ , deviceToken);
    //  将data转换为String
    NSString * tokenString = [deviceToken description];
    //  stringByTrimmingCharactersInSet 方法
    tokenString = [tokenString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    //  去除空格
    tokenString = [tokenString stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"%s , %d | deviceToken = %@" , __FUNCTION__ , __LINE__ , tokenString);

    
    
}

//  远程推送服务注册失败
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"远程推送服务注册失败" message:[error description] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
    [alert show];
}

//  接收通知,应用程序处于活跃状态,在程序处于后台时,需要点击通知,进入程序后才能进入次方法~
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"%s , %d | userInfo = %@" , __FUNCTION__ , __LINE__ , userInfo);

}

设置完成后先运行一次程序  查看控制台打印的tokenString;将此值赋值一份,将我们的send.php问价用系统的文本编辑器打开  更改其中的  token为自己赋值的值 然后保存,在后面我们将会用到~



接下来进入工程,将我们之前创建的工程的Bundle ID 改为我们在网页上创建证书时 填写的 Bundle ID,    点击你工程 右侧选中图中的条目“info”修改  如图:


点击工程的 Bulid Setting 找到“Code Signing” 将Dubug以及Any iOS SDK两项的证书调整为 你在创建描述文件时勾选的证书 (注:不是之前创建的推送证书,而是包含测试设备的测试证书

然后将最后的 provisioning profile 选中之前创建并下载的 描述文件



找到系统的“钥匙串” 将我们刚才安装的推送证书在导出,导出为 *.p12格式 , 我的使用同事的名称命名为xiaolu.p12



生成此证书后

打开电脑“终端” 运行如下代码:


cd +… “…”为你的证书所在的目录(即将终端跳转入你的证书存放的文件夹)


生成 pem文件 的命令: 

openssl x509 -in*.cer -inform der -out *.pem

  其中* .cer为我们从网络上请求下来的推送证书,我的是图中的aps_development.cer , *.Pem为自己命名的文件,我的命名为 xiao.pem ,运行完当前目录下即生成对应的xiao.pem证书


接着运行

openssl pkcs12 -in*.p12 -out *.pem

  其中*.p12为我们将推送证书加入钥匙串后从钥匙串中导出的证书,我的对应的是xiaolu.p12 ,后面的*.pem还是自己命名的, 点击运行时 终端会要求输入密码,第一次可以直接回车跳过,跳过后会要求再输入密码,注意此处的密码为发送推送是我们要输入的密码并且输入密码时没有光标的移动,直接输入就行,不能小于4位,点击确定,在输入一次在确定, 此处我的命名为lu.pem , 运行完当前目录下即生成对应的lu.pem证书

 

然后继续在终端运行下面的代码,作用是将刚才生成的两个pem证书合成为一个pem证书

cat *.pem *.pem> *.pem

那么 第一个*.pem对应我的是xiao.pem 第二个*.pem对应的是我的lu.pem   最后的 *.pem同样是自己命名的

我的命名为 key.pem (原因:我的推送的php文件中使用的证书为key.pem ,如图所示)


然后在终端中运行 php ./send.php 命令 输入密码即可推送,至此我们的远程推送已经搞定;
























  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值