gpt4 book ai didi

php - 如何使用 p8 授权 key 文件通过 PHP 连接到 apn

转载 作者:可可西里 更新时间:2023-11-01 02:58:07 25 4
gpt4 key购买 nike

苹果将APNs Auth Key改为p8后,目前的库如https://github.com/immobiliare/ApnsPHP仍然使用旧的 pem 和证书文件进行连接

$push = new ApnsPHP_Push(
ApnsPHP_Abstract::ENVIRONMENT_SANDBOX,
'server_certificates_bundle_sandbox.pem'
);
// Set the Provider Certificate passphrase
// $push->setProviderCertificatePassphrase('test');
// Set the Root Certificate Autority to verify the Apple remote peer
$push->setRootCertificationAuthority('entrust_root_certification_authority.pem');
// Connect to the Apple Push Notification Service
$push->connect()

使用 Node.js 示例 ( https://eladnava.com/send-push-notifications-to-ios-devices-using-xcode-8-and-swift-3/ ),我可以这样发送:

var apnProvider = new apn.Provider({
token: {
key: 'APNsAuthKey_Q34DLF6Z6J.p8', // Path to the key p8 file
keyId: 'Q34DLF6Z6J', // The Key ID of the p8 file (available at https://developer.apple.com/account/ios/certificate/key)
teamId: 'RLAHF6FL89', // The Team ID of your Apple Developer Account (available at https://developer.apple.com/account/#/membership/)
},
production: false // Set to true if sending a notification to a production iOS app
});

如何像在 node.js 中一样使用 PHP 向 iOS 发送远程通知?

最佳答案

也许为时已晚,但我为此苦苦挣扎,因为几乎每条指令都是针对旧方法的。

所以我决定用我的解决方案来回答这个“老”问题。

private static function sendNotificationAPN($device_token, $title, $body, $category, $sound, $optionals) {
$alert = array(
'aps' => array(
'alert' => array(
'title' => $title,
'body' => $body
),
'badge' => 0,
'sound' => $sound,
'category' => $category,
'content-available' => true
)
);

foreach ($optionals as $key => $option) {
$alert[$key] = $option;
}

$alert = json_encode($alert);

$url = 'https://api.development.push.apple.com/3/device/' . $device_token['apn'];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $alert);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("apns-topic: '/* your app name */'"));
curl_setopt($ch, CURLOPT_SSLCERT, /* absolute path to cert file */);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, /* passphrase for cert */);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);


$ret = array(
'body' => $response,
'httpcode' => $httpcode
);

return $ret;
}

关于php - 如何使用 p8 授权 key 文件通过 PHP 连接到 apn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com