【发布时间】:2016-07-21 07:31:21
【问题描述】:
我正在设置 MDM 服务器,并且已通过所有证书生成步骤。我可以在我的 mdm 服务器上成功注册。但是当我发送唤醒推送通知时,我没有收到设备的回复。
我正在使用Java APNS 库来发送 mdm 推送通知。代码如下:
final String token = getToken("dlfkjgldfjglfl");
ApnsService service = APNS.newService()
.withDelegate(listener)
.withCert(P12_FILE_PATH, "password")
.withProductionDestination()
.build();
final String payloadString = APNS.newPayload().mdm("push_magic_token").build();
// Send the wake up push notification to APNS
service.push(token, payloadString);
上面的代码没有错误或异常,delegate 打印 environment:production|push notification sent|notification:Message(Id=1; Token=the_token; Payload={"mdm":"magictoken"}) 这意味着推送已成功发送到 APNS,但设备永远不会唤醒并与我的 mdm 服务器通信。
在进一步阅读 Apple 文档后,它指出需要为推送通知指定主题,但库没有设置主题的方法。
apns-topic: 远程通知的主题,通常是您应用的捆绑包 ID。您在其中创建的证书 会员中心必须包含此主题的功能。如果你的 证书包含多个主题,您必须为 这个标题。如果您省略此标头并且您的 APNs 证书确实 不指定多个主题,APNs 服务器使用证书的 主题作为默认主题。
据此,我推测 Java APNS 库正在使用该主题作为证书主题。
为了生成我遵循this tutorial 的证书,但生成的vendor.p12 文件没有被APNS 接受为我的推送通知证书(握手错误)。经过一番谷歌搜索后,我发现有些人也遇到了这个问题,他们修复了它,从 Apple 下载的 mdm.cer 生成另一个 .p12 生成的 MDM 证书使用:
openssl x509 -in mdm.cer -inform DER -out push_developer.pem -outform PEM
openssl pkcs12 -nocerts -in vendor.p12 -out vendor.pem
openssl pkcs12 -export -inkey vendor.pem -in push_developer.pem -out push_developer.p12
我用作推送通知的证书是push_developer.p12
我不擅长证书管理,所以我迷路了。 我的问题是如何在证书中设置主题?
【问题讨论】:
标签: ios ssl certificate apple-push-notifications mdm