【发布时间】:2019-10-14 14:06:03
【问题描述】:
因此,我已经完成了 Apple 通行证的所有签名和压缩过程,并且能够将通行证连接到我的服务器进行更新。我剩下要解决的唯一问题是实现推送通知。
我已经尝试了几天,但似乎无法管理,我想我错过了一些非常简单的东西。我对网络不太精通,因此非常感谢您的帮助。
这是我尽我所能从 guzzle 得到的日志。
- 正在尝试 17.188.136.150:443... * TCP_NODELAY 设置 * 连接到 api.push.apple.com (17.188.136.150) 端口 443 (#0) * ALPN,提供 h2 * ALPN,提供 http/1.1 * 成功设置证书验证位置:* CAfile:/usr/local/etc/openssl/cert.pem CApath:/usr/local/etc/openssl@1.1/certs * SSL 连接使用 TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 * ALPN,服务器接受使用 h2 * 服务器证书:* 主题:CN=api.push.apple.com; OU=管理:idms.group.533599; O=苹果公司; ST=加利福尼亚; C=US * 开始日期:格林威治标准时间 2019 年 3 月 14 日 17:50:10 * 到期日期:格林威治标准时间 2021 年 4 月 12 日 17:50:10 * subjectAltName:主机“api.push.apple.com”匹配证书的“api.push.apple .com" * 发行人:CN=Apple IST CA 2 - G1; OU=认证机构; O=苹果公司; C=US * SSL 证书验证正常。 * 使用 HTTP2,服务器支持多用途 * 连接状态改变(HTTP/2 确认) * 升级后将流缓冲区中的 HTTP/2 数据复制到连接缓冲区:len=0 * 发送 HTTP POST 请求失败 * 连接 #0 到主机 api .push.apple.com 保持原样
我正在使用与我尝试更新的通行证相同的证书,并且正在发送我在注册通行证时收到的设备令牌。这是我的 php 代码。
$client = new Client();
try {
$result = $client->post('https://api.push.apple.com:443', [
'headers' => ['apns-id' => <pass_type_id> , ':path' => '/3/device/<device_id_received_upon_registration>'],
'json' => ['apns'=>''],
'debug'=>true,
'version'=>2.0,
'ssl_key' => [<path_to_key>, <key_password>],
'cert' => [<path_to_certificate (same one used for signing pass)>, <certificate_password>]]);
}
catch (GuzzleHttp\Exception\ClientException $e) {
dd($e);
}
我真的迷失了这个。请帮帮我。我还尝试使用我复制粘贴的一些其他代码连接到端口 1295,但它无法正常工作,并且由于我更熟悉端口 443,因此调试更加困难。
【问题讨论】:
标签: ssl apple-push-notifications http2 wallet passkit