pem文件是服务器向苹果服务器做推送时候需要的文件,主要是做服务器的小伙伴们要用,下面介绍一下pem文件的生成。

  • 打开Keychain Access,在Certificates里面找到上篇文章中介绍的包含推送的证书。分别将certificate和private key导出得到.p12文件。例如:Apple Development Push Services > Export “Apple Development Push Services ID123”,保存为 apns-dev-cert.p12。对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件。

  • 需要通过终端命令将这些文件转换为PEM格式:
    openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
    openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
    此处要求输入一个密码,输入123456.

  • 移除密码(上面的123456)
    openssl rsa -in apns-dev-key.pem -out apns-dev-key.pem

  • 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:
    cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem


同样 Distribution Certificate 的pem文件生成方式一样。
openssl pkcs12 -clcerts -nokeys -out apns-dis-cert.pem -in apns-dis-cert.p12
openssl pkcs12 -nocerts -out apns-dis-key.pem -in apns-dis-key.p12
openssl rsa -in apns-dis-key.pem -out apns-dis-key.pem

cat apns-dis-cert.pem apns-dis-key.pem > apns-dis.pem



Python实现:

  1. #encode:utf-8

  2. import APNSWrapper  

  3. import binascii  

  4. deviceToken = binascii.unhexlify('2cd40912550d672f9489056c200a23e4bd298ef665807760c51d66bfce9f2d7d')  

  5. # create wrapper

  6. #True Sandbox, False Distribution

  7. wrapper = APNSWrapper.APNSNotificationWrapper('ck.pem', True)  

  8. # create message

  9. message = APNSWrapper.APNSNotification()  

  10. message.token(deviceToken)  

  11. message.badge(5)  

  12. message.alert("hellowrold 234234")  

  13. # add message to tuple and send it to APNS server

  14. wrapper.append(message)  

  15. wrapper.notify()