在百度查到php利用http2协议进行apple的官方的 ANPS服务器,看得头晕眼胀没得个所以然,还是自己看apple的官方文档比较靠谱。
ANPS推送需要获取证书,可以参看博客 https://my.oschina.net/u/2340880/blog/413584
其中在生成私钥后
openssl pkcs12 -nocerts -out PushKey.pem -in key.p12
执行
openssl rsa -in PushKey.pem -out PushKey.pem
把证书的密码删除,这样以后再合成ck.pem证书。在demo使用合成证书时就不需要输入密码.
打开PushKey.pem,应该会看到下面的格式
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAxeInTKRB48Jh0xqBk06fnCdCzkXI/YRvy6aLCI8b/MbH3PR3
.........
-----END RSA PRIVATE KEY-----
然后打开 PushKey.pem ,把PushKey.pem中的 CERTIFICATE 复制到PushKey.pem的头部
-----BEGIN CERTIFICATE-----
MIIGNzCCBR+gAwIBAgIIREfQ40gduJIwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV
.......
-----END CERTIFICATE-----
新的 PushKey.pem 应该为
-----BEGIN CERTIFICATE-----
MIIGNzCCBR+gAwIBAgIIREfQ40gduJIwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV
.......
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAxeInTKRB48Jh0xqBk06fnCdCzkXI/YRvy6aLCI8b/MbH3PR3
.........
-----END RSA PRIVATE KEY-----
下面是发送Demo
[$deviceToke] : Iphone的标识
[$cert_root] : 上述博客中合成ck.pem的 绝对路径
$url = "https://api.sandbox.push.apple.com:443";
$requestUrl = "/3/device/[$deviceToke]";
$curlUrl = $url . $requestUrl;
$string = md5(microtime(true));
$uuid = substr (