苹果消息推送正式环境

上一篇文章是测试环境的消息推送,这篇是关于正式环境的消息推送步骤,有点差别,分享给大家:

IOS的推送证书,有有效期限制,一般为一年。当我们证书过期的时候,就需要重新生成证书了。下边我们将重新生成一个正式环境的push推送的证书。

1。先打开钥匙串(应用程序-实用工具-钥匙串访问),请求一个证书



常用名称写为:2013.04.27_push_production_***。并保存到磁盘上。


2。进入打开苹果网站的证书标签页面,选择 Identifiers标签下边的App IDs子标签,显示下边图片。红色圈中的是我要重新生成push签名的证书。点击此证书。



3。证书详情标签,罗列出了所有的功能状态,最后的Push Notifications显示可以配置,并不是Enabled可以状态,所以点击Setting功能重新上传证书。



4。证书设置页面中,最下边的Push Notifications 如下图所示。



其中:Development SSL Certificate是测试环境证书,Production SSL Certificate为正式环境证书,我们生成正式环境的证书,点击后面的Create Certificate。


5。Create Certificate页面如下。点击下边的continue。



6。选择上传的证书,我们第一步已经生成了一个证书,上传此证书。



7。上传成功后,将会显示下边的图片。有可能在生成证书的过程中会有loading框一直在转转转,这时候重新进入此页面即可。其实此时证书已经生成了。



此时,push证书已经生成,上边会标注过期时间,push的证书有效期为一年。点击Download下载此证书。


8。双击刚才下载的证书,会自动把此证书加入到钥匙串的签名中,如下图标示,红色圈中的,既是我刚才添加的证书,展开此证书



先右键点击 Apple Production IOS PushServices:com.***.***,先导出一个.p12文件。命名为cert.p12。在导出的过程中会让输入导出密码,输入相应的密码即可。


9。在2012.04.27_push_producation_***上点击右键,导出一个.p12的文件,命名为key.p12,与上边相同在导出的过程中会让输入导出密码,输入相应的密码即可。




10。到此为止,我们已经有了两个.p12文件,把他们放到同一个文件夹(aaa)下,需要把两个.p12文件转换成.pem文件。

a.先打开终端,切换到文件夹aaa下执行

openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12

在执行的时候,将会让输入密码,输入刚才设置的密码即可生成一个cert.pem文件。

b.再执行:

openssl pkcs12 -nocerts -out key.pem -in key.p12

此时要注意在终端中的提示,第一次输入的密码是生成证书时候的密码,第二次第三次输入密码是设置key.pem的新密码。

c.如果需要对 key不进行加密,执行下边语句

openssl rsa -in key.pem -out key.unencrypted.pem

d.然后就可以合并两个.pem文件,这个ck.pem就是服务端需要的证书了。

cat cert.pem key.unencrypted.pem > ck.pem

此时,把生成的ck.pem给服务器端的人员即可。


try {            
            String deviceToken = "10f7 4593 df81 8db7 74b8 2fa7 bf75 551d 7659 eae0 4969 983a e2fd c3a2 1d4a e92f";//iphone手机获取的token
        deviceToken = deviceToken.replaceAll(" ", "");
        PayLoad payLoad = new PayLoad();
            payLoad.addAlert("my push test 5");//push的内容
            payLoad.addBadge(1);//图标小红圈的数值
            payLoad.addSound("default");//铃音
                      
            PushNotificationManager pushManager = PushNotificationManager.getInstance();
            pushManager.addDevice("iPhone", deviceToken);
                      
            //Connect to APNs
                        /************************************************
                        测试的服务器地址:gateway.sandbox.push.apple.com /端口2195 
            产品推送服务器地址:gateway.push.apple.com / 2195 
                       ***************************************************/
            String host= "gateway.sandbox.push.apple.com";
            int port = 2195;
            String certificatePath= "/Users/aps_development_identity.p12";//导出的证书
            String certificatePassword= "123456";//此处注意导出的证书密码不能为空因为空密码会报错
            pushManager.initializeConnection(host,port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
            
            // Send Push
            Device client = pushManager.getDevice("iPhone");
            
            System.out.println("推送消息: " + client.getToken()+"\n"+payLoad.toString() +" ");
            pushManager.sendNotification(client, payLoad);
            pushManager.stopConnection();
            pushManager.removeDevice("iPhone");
            System.out.println("推送消息成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
</pre>
输出结果:
推送消息: 10f74593df818db774b82fa7bf75551d7659eae04969983ae2fdc3a21d4ae92f
{"aps":{"sound":"default","alert":"my push test 5","badge":1}} 
推送消息成功

  测试的服务器地址:gateway.sandbox.push.apple.com /端口2195 
  产品推送服务器地址:gateway.push.apple.com / 2195 
谨记:1.测试的时候使用的是开发者证书,服务器用的是测试服务器地址,而项目上线以后换成真正的证书以后要使用产品推送服务器,否则的话推送能够成功但是手机却收不到消息;
       2.注意develop和distribution的device token是不同的。所以不要用混了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值