APNS Provider API 和 Postman

Posted

技术标签:

【中文标题】APNS Provider API 和 Postman【英文标题】:APNS Provider API and Postman 【发布时间】:2017-08-30 16:35:16 【问题描述】:

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

由于我不明白的原因,我从 Postman 发送到 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 证书(如 there 所述)。

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

openssl pkcs12 -in apns.p12 -out apns.crt.pem -clcerts -nokeys
openssl pkcs12 -in apns.p12 -out apns.key.pem -nocerts -nodes

3 - 将 Postman(首选项 > 证书)配置为将这些 .pem 文件用于 Provider API url(dev 和 prod)

4 - 使用 apns-topic 标头为我的设备令牌设置对这些 Provider API 端点的 POST 请求,该标头具有我的捆绑 ID 作为值,以及这样的 HTTP 正文:


    "aps" : 
        "alert" : 
            "title" : "Game Request",
            "body" : "Bob wants to play poker"
        
    

失败并显示“无法得到任何响应,blablabla”。

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

发布 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"

另外,当我按照 there 的说明使用 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

怎么了?

【问题讨论】:

不确定是否是我收到此错误的原因,但似乎 APS Provider API 需要 Postman 尚不支持的 HTTP/2 :(... 【参考方案1】:

好的,忘记 Postman,我最终使用 curl 和 http2 和更新版本的 openssl (1.0.2l),它工作得很好。对于那些想查看 curl 命令示例的人,它是 here。

【讨论】:

以上是关于APNS Provider API 和 Postman的主要内容,如果未能解决你的问题,请参考以下文章

开始筹备搞一个实现HTTP/2的provider

iOS推送原理

是否可以将现有的 GCM senderId 和 API 密钥用于 GCM To APNS 推送通知?

如何注册 GCM 和 APNS,获取 DeviceId 并将我的 API 发送给它以进行数据库存储?

如何在调用 API 时向 APNS 发送推送证书?

iOS推送原理详解