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的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将现有的 GCM senderId 和 API 密钥用于 GCM To APNS 推送通知?