Java APNS(Apple推送通知服务)错误

Jak*_*kov 6 java apple-push-notifications

我正在尝试使用Java APNS(一个开源项目)向iPhone发送推送通知.但是我收到了一个错误.

我使用.pem文件作为证书.这应该是.p12文件吗?我不确定区别是什么,但我在网上看到这些文件格式之间存在差异.

这是代码:

   ApnsService service =
        APNS.newService()
            .withCert("gpk.pem", "XXXX")
            .withSandboxDestination()
            .build();


    String payload = APNS.newPayload().alertBody("Can't be simpler than this!").build();
    String token = "theTokenIsRemoveHere";
    service.push(token, payload);
Run Code Online (Sandbox Code Playgroud)

这是错误:

Exception in thread "main" com.notnoop.exceptions.InvalidSSLConfig: java.io.IOException: toDerInputStream rejects tag type 45
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:102)
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:161)
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:124)
    at com.geomobsters.cli.ApnsClient.main(ApnsClient.java:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.io.IOException: toDerInputStream rejects tag type 45
    at sun.security.util.DerValue.toDerInputStream(DerValue.java:806)
    at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1201)
    at java.security.KeyStore.load(KeyStore.java:1185)
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:87)
    ... 8 more
Run Code Online (Sandbox Code Playgroud)

Sta*_*bax 10

Java APNS期望cert为.p12文件.

您必须在钥匙串中检查私钥和证书.然后右键单击 - >"导出2个文件"并导出它们你必须给它一个密码,这个密码你必须在这里输入

.withCert("gpk.pem", "XXXX")
Run Code Online (Sandbox Code Playgroud)

作为你的XXXX

祝好运

编辑:

.P12 - PKCS#12,包含用密码保存的私钥的证书.PEM - 是Base64编码的证书,lockedby „-----BEGIN CERTIFICATE-----“ and „-----END CERTIFICATE-----“