APNS Provider API 和 Postman

Żab*_*jad 5 ssl apple-push-notifications ios postman

我正在尝试使用 Postman 在我的 iOS 应用程序中创建和测试 Apple 通知。

对于原因,我不明白,我请求从邮差派任https://api.development.push.apple.com/3/device/<token-device>https://api.push.apple.com/3/device/<token-device>没有得到任何HTTP响应失败。

到目前为止我所做的:

1 -创建并从我developer.apple.com帐户导出的APNS凭证(如解释)。

2 - 将此 .p12 证书与最新版本的 openssl (1.0.2l) 转换为 .pem 证书和密钥,如下所示:

openssl pkcs12 -in apns.p12 -out apns.crt.pem -clcerts -nokeys
openssl pkcs12 -in apns.p12 -out apns.key.pem -nocerts -nodes
Run Code Online (Sandbox Code Playgroud)

3 - 配置 Postman(首选项 > 证书)以将这些 .pem 文件用于提供程序 API url(开发和生产)

4 - 为我的设备令牌设置一个到那些提供者 API 端点的 POST 请求,其中包含一个apns-topic包含我的包 ID 值的标头,以及一个像这样的 HTTP 正文:

{
    "aps" : {
        "alert" : {
            "title" : "Game Request",
            "body" : "Bob wants to play poker"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它失败了“无法得到任何回应,blablabla”。

如果我检查 Postman 控制台会发生什么,我会看到:

POST https://api.development.push.apple.com/3/device/12340e529f85a145b567736e7fd84c9d7e42a43a3c343ec378c2ff071011e4 06:18:08.236

错误:解析错误

客户证书:

keyPath:"/Users/thomas/wksp_myproj/apns.key.pem"

pemPath:"/Users/thomas/wksp_myproj/apns.crt.pem"

请求头:

缓存控制:“无缓存”

邮递员令牌:“99615df2-b2aa-4a51-8d15-8ce27f4e8ca9”

内容类型:“应用程序/json”

apns-topic:"myproj.app"

另外,当我按照那里的说明使用 openssl 进行测试时:

openssl s_client -connect api.development.push.apple.com:443 -cert apns.pem -debug -showcerts -CAfile GeoTrust_Global_CA.pem

最后我得到了很多输出: HTTP/2 client preface string missing or corrupt. Hex dump for received bytes: 0aread from 0x7f9445c215c0 [0x7f9446015c03] (5 bytes => 0 (0x0)) read:errno=0

怎么了?

Żab*_*jad 5

好吧,忘记 Postman,我最终使用了带有 http2 的curl 和 openssl 的更新版本(1.0.2l),并且它工作得很好。对于那些想查看curl命令示例的人,可以在这里查看。