半只蚂蚁 发表于 2018-8-12 07:47:40

APNSWrapper,python 苹果推送

  1.证书及乱七八糟的配置

  公钥:app>  私钥:申请证书时候从钥匙串生成的"CertificateSigningRequest.certSigningRequest"文件在"钥匙串->密钥"那儿生成的与之前输入的名字相同的“专用密钥”,可以右键导出为***.p12文件
  合成PEM证书
  1)转换公钥
openssl x509 -in aps_developer.cer -inform der -out public.pem  2)转换私钥
openssl pkcs12 -nocerts -in MyPushChatKey.p12 -out private.pem  (这时候要输入密码的)
  有了这两个pem文件其实就可以测试一下能否联通苹果的服务器了,网上有,就简写了
telnet gateway.sandbox.push.apple.com 2195 (测试是否能连通苹果的推送测试服务器)Trying 17.172.232.226...  
Connected to gateway.sandbox.push-apple.com.akadns.net.
  
Escape character is '^]'.
  要是出现上面的结果就ok了,然后测试刚才的两个pem:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert public.pem -key private.pem  输完密码之后,要是输出一堆提示信息就算是ok了
  3)把两个证书合成(为了服务器用着方便)
cat public.pem private.pem > push_cert.pem  (这里先输入私钥密码,再输入合成之后的新密码,新密码得记住了,之后server用这个pem发推送的时候要用到)
  保存好这些文件,证书这就算ok了。
  2.用python写个简单的测试push server
  
  from APNSWrapper import *
  import binascii
  def badge(wrapper, token):
  message = APNSNotification()
  message.token(token)
  message.badge(3)
  print message._build()
  wrapper.append(message)
  def sound(wrapper, token):
  message = APNSNotification()
  message.token(token)
  message.sound("default")
  print message._build()
  wrapper.append(message)
  def alert(wrapper, token):
  message = APNSNotification()
  message.token(token)
  alert = APNSAlert()
  alert.body("Very important alert message")
  alert.loc_key("ALERTMSG")
  alert.loc_args(["arg1", "arg2"])
  alert.action_loc_key("OPEN")
  message.badge(3)
  message.sound("default")
  message.alert(alert)
  # properties wrapper
  property = APNSProperty("acme", (1, "custom string argument"))
  message.appendProperty(property)
  print message._build()
  wrapper.append(message)
  def testAPNSWrapper():
  encoded_token = binascii.unhexlify("02b0a0fa821278edb2674f711ca66da255b5d81feceb784ec125897f5e7f")
  wrapper = APNSNotificationWrapper("push_cert.pem
  ",True)
  alert(wrapper, encoded_token)
  wrapper.notify()
  if __name__ == "__main__":
  testAPNSWrapper()
  
页: [1]
查看完整版本: APNSWrapper,python 苹果推送