首页 > 解决方案 > 使用 swift 的 APNS 通知

问题描述

iOS 11.x 斯威夫特 4.0

是的,我知道有几十种解决方案可以为您发送推送通知,但我希望创建一个本地解决方案。

现在我设法将一些有效的 PHP 代码放在一起,在其中我构建了一个 APNS 有效负载,然后将其打包到 Apple,当然 Apple 会将其发送给我的客户。它只有 10 行代码,但现在我需要将其转换为 Swift。

$payload='{
"aps": {
"alert":{
"title": "Yo",
"body":"Stay Cool" },
"badge":99,
"category":"new.category",
"sound": "default"
},
"misc": "tag"
}';

$apnsHost = 'gateway.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$deviceToken = '7effd4dfc158d922c867c1e3c99fd46296e2b1afcd080a63a2da398bce1c9bb3';
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error,   $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
echo $error;
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '',     $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
?>

我在 SO 上找到了这个答案,看起来像我的男人,但是没有……没有证书 [.pem] 在那里吗?

Swift 中的 BSD 套接字应该如何使用安全传输 TLS?

我现在已经超出了我的深度?迫切需要任何指向正确路径的帮助/指针吗?

标签: phpiosswiftopensslapple-push-notifications

解决方案


推荐阅读