Apple MDM - 推送通知主题

时间:2016-04-01 13:09:23

标签: ios ssl certificate apple-push-notifications mdm

我正在设置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文档后,它指出需要为推送通知指定主题,但库没有设置主题的方法。

来自Apple Documentation

  

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

我不熟悉证书管理,所以我迷路了。 我的问题是如何在证书中设置主题?

1 个答案:

答案 0 :(得分:1)

我设法弄清楚这个主题是如何运作的。它确实在证书内。

当我在Mac上时,我会解释如何在Mac上获得正确的证书。

  1. 下载Apple生成的MDM证书(您应该可以从Apple网站上的MDM控制面板下载)
  2. 在您的计算机上安装证书
  3. 打开钥匙串,找到您刚刚在第2步安装的证书。它应该是这样的:APSP:slkjl34435-sdkj-sfd0-34o5uoijsdf
  4. 点击箭头,您会看到私钥。
  5. 选择证书。右键单击并选择“导出1项”。 仅导出您的证书,而不是证书+私钥。
  6. 保存.p12文件并将其用作MDM推送通知证书。
  7. 通过这些步骤,我设法让主题工作,但我的设备仍然没有醒来。我将打开一个关于设备没有醒来的新问题,因为这与主题和证书更相关(我认为设备没有因为主题不正确而醒来)。