码迷,mamicode.com
首页 > 移动开发 > 详细

iOS推送&PHP后台

时间:2015-11-17 21:54:32      阅读:2102      评论:0      收藏:0      [点我收藏+]

标签:

iOS远程推送,PHP最后台服务器进行推送。

推送机制:

1,PHP后台把要发送的消息、目的iPhone的标识打包,发给APNS(apple 推送服务器)。

2,APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。

3,iPhone把发来的消息传递给相应的应用程序, 程序收到通知。

流程:

1,首先创建一个对应的APPID (Registering an App ID),这个和自己项目的Bundle Identifier要相符,不然推送会连接出错。对应了之后,选择服务的时候要勾选PUSH这个,标示这个项目要用到推送。

技术分享

技术分享

2,创建开发者的开发证书,证书有开发证书和发布证书,(主要以开发为例,因为开发和发布的证书和配置文件是一样的)。创建的时候注意两点,第一点是选择开发者的推送通知服务,如图:

技术分享

 

第二点注意的是要选择自己刚刚创建的有push的那个appid,如图:

技术分享

 

然后上传自己从电脑里边导出的certSigningRequest文件,最后下载这个证书,双击进行安装。

然后会发现自己电脑钥匙串的证书里边多了一个证书,如图:

技术分享

 

这个就是接下来自己推送用到的证书,最后创建配置文件:

创建配置文件选择刚刚自己创建的appid,然后选择证书,select all就行,最后选择设备,也就是测试的手机或者touch等,也选择all,创建成功之后双击进行安装。这样就装到自己xcode里边了。

配置后台流程:

1,首先将自己刚刚下载安装的cer证书在钥匙串里边找到,然后右键,导出证书:

技术分享

 

导出之后输入一个密码,记住这个密码,后边用,导出之后是一个p12文件,保存起来,最好和刚刚下载的cer这个文件保存在一个文件夹下。

然后打开终端,将cer文件和p12文件分别转换成pem文件: aps_development\ \(8\).cer是下载的证书文件。DevelopPushP12.p12是从钥匙串导出的p12证书。

openssl x509 -in aps_development\ \(8\).cer -inform der -out pushDeveCerTopem.pem

openssl pkcs12 -nocerts -out pushDeveP12Topem.pem -in DevelopPushP12.p12

第二次会出现输入密码的界面,就是刚自己导入时候设置的密码,然后会让输入四个字符的新的pem的密码,记住就行了。

然后会看见有两个pem的文件,然后将两个pem文件合并成一个pem文件,也就是将刚刚生成的两个pem合并了:

cat pushDeveCerTopem.pem pushDeveP12Topem.pem > sum.pem

接下来可以测试一下苹果的ssl服务的,也就是APNS的测试服务器:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert pushDeveCerTopem.pem -key pushDeveP12Topem.pem

如果出现图中的字样,那么说明配置成功了:

技术分享

然后进入xcode,记住自己的Bundle Identifier必须和刚刚申请的appid里边的Bundle Identifier匹配,然后选择xcode中这个项目是接收通知的:

技术分享

然后appdelegate里边:

 

服务器:

将刚刚合成的pem文件和自己要运行的php文件放在同一个文件夹下,服务器代码:

然后真机选择在code sign里边选择自己的配置文件,证书不用选择,xcode会自动匹配:

技术分享

运行自己的app,然后打开终端,进入自己后台服务器的文件夹,运行php文件:

php push.php

如果运行上边服务器的代码,出现Connection OK的字样,说明后台没问题,然后再看看前台时候收到通知。

我这边是接收到了:

技术分享

最后看看要注意的几点:

1,每次的设备号获取之后不能自己在后台手动输入,而是获取之后通过http请求,将设备号发送给服务器,然后让服务器来推,所以项目中获取设备号之后:

 

2,小红点问题和跳转问题。当用户进入界面之后,用户离开后台之后小红点的处理。 跳转到指定页面的处理,服务器传来数据,通过客户端判断进行操作,不一一列举。

3,ios 的推送消息有256个字符长度限制;超出范围不能发送 ,且失败。

4,PHP运行的服务器如果没有开通sll模块,不管是apache,还是iis,都要开启这三个模块:

mod_include
mod_cgi
mod_expires

5,php文件在终端中打开,别再浏览器中打开,因为ssl模块不属于服务器的http模块,不开启服务也能推送,这是我试验过的。

 6,服务器可以通过不同的身份推送不同的消息给客户端,取决于服务器要什么参数和客户端传什么参数。

7,ios8的注册方法可以这么判断:

 

8,didFinishLaunchingWithOptions里边的配置应该有点多,不是这么写的应该是,改天改改。ios8步骤就是注册设置,然后注册,这么个流程。

9,推送就是实时通讯。

 

版权属于: Ashes of time

原文地址: http://www.iashes.com/2015-11-942.html

转载时必须以链接形式注明原始出处及本声明。

 

iOS推送&PHP后台

标签:

原文地址:http://www.cnblogs.com/lemark/p/4972957.html

(4)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!