iOS开发之远程推送
来源:互联网 发布:js修改对象的属性值 编辑:程序博客网 时间:2024/05/17 04:52
一、准备阶段
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文件,命令行如下,合并的时候会让输入密码,密码就是我们上面设置的密码:
1 openssl pkcs12 -clcerts -nokeys -out a.pem -in aps_test.p122 openssl pkcs12 -nocerts -out b.pem -in aps_test.p123 cat a.pem b.pem > end.pem
6、将生成的end.pem文件上传到SAE上的云推送服务上即可,我们在SAE上可以通过文件的id进行访问:
二、服务器端代码编写:
SAE上云推送所用到的PHP代码如下:
<?php$cert_id =你的证书序号;$device_token = 你的deviceToken;$message = "hello world";//这个是简单的例子,更复杂的消息格式请查看苹果官方文档$body = array( 'aps' => array( 'alert' => $message));$apns = new SaeAPNS();//push消息到SAE推送服务器$result = $apns->push( $cert_id , $body , $device_token );if( $result && is_array($result) ){ echo '发送成功'; var_dump( $result );} else { echo '发送失败'; var_dump($apns->errno(), $apns->errmsg());}//查看消息发送的汇总信息,返回值包括当天发送成功的消息数,以及因各类原因发送失败的消息数。$result = $apns->getInfo($cert_id);if ($result === false) { echo "getInfo失败"; var_dump($apns->errno(), $apns->errmsg());} else { echo "getInfo成功"; var_dump($result);}?>
三、客户端代码如下:
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]; return YES;}
2.获取设备令牌的回调方法
//注册远程推送后获取设备令牌-(void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSLog(@"%@",deviceToken);}
3.注册错误回调的方法:
-(void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{ NSLog(@"%@",[error localizedDescription]);}
- iOS开发之远程推送
- iOS开发之远程推送
- iOS开发之远程推送
- iOS开发之远程推送
- [转载]IOS开发之----远程推送通知
- ]IOS开发之----远程推送通知
- IOS开发之----远程推送通知
- IOS开发之高级功能---远程推送
- IOS开发之----远程推送通知
- IOS开发之----远程推送通知
- IOS开发之----远程推送通知
- iOS开发之远程推送Push
- iOS开发之远程推送Push
- iOS开发之远程推送Push
- iOS开发 远程推送
- iOS推送之远程推送
- iOS推送之远程推送
- iOS推送之远程推送
- 网页代码优化
- stdafx.h
- try,catch,finall,return的执行顺序
- 游戏地图,精灵移动处理,粒子系统,声音引擎,地图移动,游戏暂停
- iOS-CS193p-01-简单的抽牌应用
- iOS开发之远程推送
- MySQL 官方示例数据库安装
- Value Object模式
- Activity.setContentView()源码分析
- Java中异常处理机制
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
- Jquery和Ajax的使用参考手册
- sql之left join、right join、inner join的区别
- SharedPerferences的简单使用