iOS实现推送消息并用PHP做推送服务端的方法

上传人:飞*** 文档编号:22209390 上传时间:2017-11-26 格式:DOC 页数:18 大小:799KB
返回 下载 相关 举报
iOS实现推送消息并用PHP做推送服务端的方法_第1页
第1页 / 共18页
iOS实现推送消息并用PHP做推送服务端的方法_第2页
第2页 / 共18页
iOS实现推送消息并用PHP做推送服务端的方法_第3页
第3页 / 共18页
iOS实现推送消息并用PHP做推送服务端的方法_第4页
第4页 / 共18页
iOS实现推送消息并用PHP做推送服务端的方法_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《iOS实现推送消息并用PHP做推送服务端的方法》由会员分享,可在线阅读,更多相关《iOS实现推送消息并用PHP做推送服务端的方法(18页珍藏版)》请在金锄头文库上搜索。

1、南宁 IOS 开发培训iOS实现推送消息并用 PHP做推送服务端的方法IOS 推送消息是许多 IOS 应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下:iOS 消息推送的工作机制可以简单的用下图来概括:Provider 是指某个 iPhone 软件的 Push 服务器,APNS 是 Apple Push Notification Service 的缩写,是苹果的服务器。上图可以分为三个阶段:第一阶段:应用程序把要发送的消息、目的 iPhone 的标识打包,发给 APNS。 第二阶段:APNS 在自身的已注册 Push 服务的 iPhone 列表中,查找

2、有相应标识的iPhone,并把消息发送到 iPhone。 第三阶段:iPhone 把发来的消息传递给相应的应用程序,并且按照设定弹出 Push 通知。南宁 IOS 开发培训从上图我们可以看到:1、应用程序注册消息推送。2、iOS 从 APNS Server 获取 device token,应用程序接收 device token。3、应用程序将 device token 发送给 PUSH 服务端程序。4、服务端程序向 APNS 服务发送消息。5、APNS 服务将消息发送给 iPhone 应用程序。无论是 iPhone 客户端和 APNS,还是 Provider 和 APNS,都需要通过证书进行连

3、接。下面我介绍一下几种用到的证书。一、CSR 文件南宁 IOS 开发培训1、生成 Certificate Signing Request(CSR)2、填写你的邮箱和常用名称,并选择保存到硬盘。点击继续:南宁 IOS 开发培训这样就在本地生成了一个 Push.certSigningRequest 文件。二、p12文件1、导出密钥。南宁 IOS 开发培训2、输入你的密码。这样就生成了一个 Push.p12文件。三、SSL certificate 文件1、用你付过费的帐号登录到 iOS Provisioning Portal,并新建一个 App ID,这个过程可以参考:iOS 应用的真机调试,这样就

4、会生成下面这条记录:2、点击右侧的 Configure:南宁 IOS 开发培训3、点击 Development Push SSL Certificate 一行后的 Configure:4、点击 Continue:南宁 IOS 开发培训5、选择前面生成好的 Push.certSigningRequest 文件,点击 Generate,出现如下所示的页面:南宁 IOS 开发培训6、点击 Continue:7、点击 Download,并将文件命名为 aps_developer_identity.cer。8、点击 Done,你会发现状态变成了 Enabled:南宁 IOS 开发培训到现在为止,我们已经

5、生成了三个文件:1、Push.certSigningRequest2、Push.p123、aps_developer_identity.cer双击 aps_developer_dientity.cer 注册到你的钥匙串中,这样你的钥匙串中就会有二、准备 profile 证书,因为推送消息只能再真机上测试,所以要建一个 profile 证书点击new profile为上面新建的 APP ID 建个 profile ,成功之后下载*_Dev_Profile.mobileprovision双击将其加入到 xcode 的 Provisioning Profiles 中,这里有一点要注意,再将这个加入

6、xcode 之前如果之前已经加入过一定要把之前加入的删掉,如果有多个的话会出错。三、工程代码南宁 IOS 开发培训到这里证书已经准备完毕,接下来,我们在 xcode 中新建一个测试工程,注意设置工程的 Bundle Identifier 必须与上面建的 APP ID 里的相同在 didFinishLaunchingWithOptions 中加入一下代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsself.window mak

7、eKeyAndVisible;UIApplication sharedApplication registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert;return YES;- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToke

8、n NSLog(regisger success:%, pToken);/注册成功,将 deviceToken 保存到应用服务器数据库中南宁 IOS 开发培训- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo/ 处理推送消息UIAlertView *alert=UIAlertView allocinitWithTitle:通知 message:我的信息 delegate:selfcancelButtonTitle:取消 otherButton

9、Titles:nil, nil;alert show;alert release;NSLog(%, userInfo);- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error NSLog(Regist fail%,error); 到这里一切顺利的话我们就可以在真机运行了,注册成功我们会得到 iphone 的南宁 IOS 开发培训deviceToken,My token is:四、在应用服务器采用 php 的方式将消息推送给

10、 APNS,1、php 连接 APNS 也是需要证书的,还记得我们上面获得的几个证书吗?打开终端,对上面的证书做如下处理,cd 进入证书所在目录把.cer 文件转换成.pem 文件 :$ openssl x509 -in aps_developer_identity.cer -inform der-out PushChatCert.pem把私钥 Push.p12文件转换成.pem 文件:$ openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12Enter Import Password:MAC verified OKEnter PEM

11、 pass phrase:Verifying Enter PEM pass phrase:你首先需要为.p12 文件输入 passphrase 密码短语,这样 OpenSSL 可以读它。然后你需要键入一个新的密码短语来加密 PEM 文件。还是使用”pushchat”来作为 PEM 的密码短语。你需要选择一些更安全的密码短语。注意:如果你没有键入一个 PEM passphrase,OpenSSL 将不会返回一个错误信息,但是产生的.pem 文件里面将不会含有私钥。南宁 IOS 开发培训最后。把私钥和证书整合到一个.pem 文件里:$ cat PushChatCert.pem PushChatKe

12、y.pem ck.pem为了测试证书是否工作,执行下面的命令:$ telnet 2195Trying 17.172.232.226Connected to gateway.sandbox.push-.Escape character is .它将尝试发送一个规则的,不加密的连接到 APNS 服务。如果你看到上面的反馈,那说明你的 MAC 能够到达 APNS。按下 Ctrl+C 关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许2195端口。然后再次连接,这次用我们的 SSL 证书和私钥来设置一个安全的连接:$ openssl s_client -connect :2195-cert

13、 PushChatCert.pem -key PushChatKey.pemEnter pass phrase for PushChatKey.pem:你会看到一个完整的输出,让你明白 OpenSSL 在后台做什么。如果连接是成功的,你可以键入一些字符。当你按下回车后,服务就会断开连接。如果在建立连接时有问题,OpenSSL 将会给你一个错误消息,ck.pem 文件就是我们需要得到 php 连接 APNS 的文件,将 ck.pem 和 push.php 放入同一目录上传到服务器,push.php 的代码如下:$message,sound = default);南宁 IOS 开发培训/ Enco

14、de the payload as JSON$payload = json_encode($body);/ Build the binary notification$msg = chr(0) . pack(n, 32) . pack(H*, $deviceToken) . pack(n, strlen($payload) . $payload;/ Send it to the server$result = fwrite($fp, $msg, strlen($msg);if (!$result)echo Message not delivered . PHP_EOL;elseecho Mes

15、sage successfully delivered . PHP_EOL;/ Close the connection to the serverfclose($fp);南宁 IOS 开发培训?接下来我们访问 http:/localhost/push/push.phpiphone 就会接收到一条推送消息了,如果有问题的话就检查上面的操作步骤,特别是加红的部分另外去除标记的方法为,在 viewDidApper 中加入int badge = UIApplication sharedApplication.applicationIconBadgeNumber;if(badge 0)badge-;UIApplication sharedApplication.applicationIconBadgeNumber = badge;推荐阅读: 达内 IT 培训 南宁嵌入式培训 南宁 PHP 培训

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号