iOS 11.x Swift 4.0
Да, я знаю, что существуют десятки решений, которые будут отправлять push-уведомления для вас, но я хочу создать собственное решение.
Теперь мне удалось собрать вместе некоторый PHP-код, который работает, в нем я создаю полезную нагрузку APNS и затем упаковываю ее в 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] на это есть?
Как использовать безопасный транспортный протокол TLS с BSD-сокетами в Swift?
Я сейчас не в себе?Любая помощь / указатели на правильный путь крайне необходимы?