我正在设置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服务器通信。< / p>
在进一步阅读Apple文档后,它指出需要为推送通知指定主题,但库没有设置主题的方法。
apns-topic:远程通知的主题,通常是应用的捆绑包ID。您创建的证书 会员中心必须包含此主题的功能。如果你的 证书包含多个主题,您必须为其指定值 这个标题。如果省略此标题并且您的APNs证书确实如此 不指定多个主题,APNs服务器使用证书 主题为默认主题。
由此我假设Java APNS库正在使用该主题作为证书主题。
要生成我遵循的证书this tutorial,但生成的vendor.p12
文件未被APNS接受为我的推送通知证书(握手错误)。经过一些谷歌搜索后,我发现有些人也遇到了这个问题,他们修复了这个问题,从使用Apple生成的MDM证书下载的.p12
生成另一个mdm.cer
:
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
我不熟悉证书管理,所以我迷路了。 我的问题是如何在证书中设置主题?
答案 0 :(得分:1)
我设法弄清楚这个主题是如何运作的。它确实在证书内。
当我在Mac上时,我会解释如何在Mac上获得正确的证书。
通过这些步骤,我设法让主题工作,但我的设备仍然没有醒来。我将打开一个关于设备没有醒来的新问题,因为这与主题和证书更相关(我认为设备没有因为主题不正确而醒来)。