iOS开发之远程推送

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

说到远程推送,应该用的也挺多的,今天就基于SEA的云推送服务,做一个推送的小demo,来了解一下iOS中的远程推送是怎么一回事儿,首先你得有苹果的开发者账号,好咸蛋也差不多了,主要内容走起。

一、准备阶段

1.在苹果开发官网上申请推送证书之前需要一个名字叫做certSigningRequest文件。该文件在MAC系统中生成,用于在Apple网站上申请推送证书文件,下面是利用钥匙串生成该文件的步骤:

(1).打开Mac下的钥匙串-》钥匙串访问-》证书助理-》从证书颁发机构请求证书,如下图所示:

(2).经过上一步会出现下面的对话框,邮箱和名称随便填写,然后选择保存到磁盘,就可以在本地生成一个CertificateSigningRequest.certSigningRequest文件。如下图:

2.去苹果开发者的网站上申请推送证书,步骤如下:

(1)、用开发者账号登陆后,进入Member Center,入下图所示:

(2)、进入member Center后点击下面截图的链接:

(3)、注册一个支持推送的AppId,在identifiers下面的App IDs选项中点击添加按钮,添加一个新的AppIDs,入下图:

(4)、填写你的AppId的名字

(5)、绑定你应用的Bundle ID

(6)、选中Push Notifications,使本AppID支持消息推送:

3、用上面的AppID申请推送证书

(1)、点击证书,选中开发模式,然后单选推送服务

(2)、选中我们刚才创建的AppID,如下:

(3)、上传我们刚才在本地用钥匙串创建的文件:

(4)、接下来就可以下载并使用我们的推送证书了

4、用我们的AppID创建一个PRovisioning Profiles文件,如下:

5.由上面的证书,生成php用的pem文件过程如下:

(1).由钥匙串打开上面我们生成的CSR文件,单击右键导出p12文件,如下图:

(2).设置访问密码:

(3)、在终端下切换到存有刚才我们导出的p12文件夹下,进行命令行生成pem文件,命令行如下,合并的时候会让输入密码,密码就是我们上面设置的密码:

1openssl pkcs12 -clcerts -nokeys -outa.pem -inaps_test_cer.p122openssl pkcs12 -nocerts -outb.pem -inaps_test_key.p123cat a.pem b.pem > end.pem

6、将生成的end.pem文件上传到SAE上的云推送服务上即可,我们在SAE上可以通过文件的id进行访问:

二、服务器端代码编写:

SAE上云推送所用到的PHP代码如下:

1<?php23$cert_id=你的证书序号;4$device_token=你的deviceToken;5$message= "hello world";67//这个是简单的例子,更复杂的消息格式请查看苹果官方文档8$body=array(9'aps' =>array( 'alert' =>$message)10);11$apns=newSaeAPNS();12//push消息到SAE推送服务器13$result=$apns->push($cert_id,$body,$device_token);1415if($result&&is_array($result) ){16echo'发送成功';17var_dump($result);18}else{19echo'发送失败';20var_dump($apns->errno(),$apns->errmsg());21}2223//查看消息发送的汇总信息,返回值包括当天发送成功的消息数,以及因各类原因发送失败的消息数。24$result=$apns->getInfo($cert_id);25if($result===false) {26echo"getInfo失败";27var_dump($apns->errno(),$apns->errmsg());28}else{29echo"getInfo成功";30var_dump($result);31}3233?>

三、客户端代码如下:

1.在Appdelegate中注册推送:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//Override point for customization after application launch.//注册远程通知[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];

[application registerForRemoteNotifications];returnYES;

}

2.获取设备令牌的回调方法

1//注册远程推送后获取设备令牌23-(void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken4{56NSLog(@"%@",deviceToken);7}

3.注册错误回调的方法:

-(void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

{

NSLog(@"%@",[error localizedDescription]);

}

4.在Build Settings中的Code Signing中中我们的推送证书和描述文件

到这儿,调用服务器上的php文件就可以给我们的设备发送通知了。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航