(IPhone) "111 Bağlantı reddedildi" vermek push bildirimleri

3 Cevap php

Ben push bildirimleri göndermeye çalıştığımda bu hatayı alıyorum: "Bağlantı reddedildi", ama neden bilmiyorum ... Ben kök dizinine de aynı dizinde benim APN-dev.pem yüklenecektir fakat ettik ya çalışmaz.

<?php
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$apnsPass = 'secret';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $apnsPass);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);

if (!$apns) {
    echo "Error: $errorString ($error)";
}

// Do this for each
$deviceToken = '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000';
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
// End do

socket_close($apns);
fclose($apns);
?>

Herkes yanlış ne yapıyorum biliyor mu? Ben parolayı kaldırmak ve göndermek yok zaman o da çalışmıyor ...

3 Cevap

Senin. Pem dosya birini gerektirir sürece bir parola istemiyorum. Bağlantı açık akran doğrulama (opsiyon verify_peer) gerektirir. Ayrıca, emin $ apnsCert sertifika geçerli bir yol yapmak, bir sağlamlık denetimi gibi bir mutlak yol kullanabilirsiniz.

Son olarak, bu bağlanma yeteneğinizi etkisi olmamalıdır, ama cihazınızın belirteci geçerli olması gerekiyor.

Giden port 2195 open.This firewall config olurdu emin olun.

STREAM_CLIENT_CONNECT | STREAM_CLIENT_ASYNC_CONNECT: Ben biliyorum bu ekleyerek bu hatayı çözdüm

Ben herhangi bir hata almıyorum biliyorum, ama herhangi bir bildirim almazsınız. Ben bu benziyor nasıl, Dev-token geçerli bilgi olmadığını düşünüyorum, bu yüzden

sayılar sayılar sayılar sayılar sayılar sayılar sayılar sayılar.

The spaces are removed in this line: $apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;

Edit: I founded the problem: My server is refusing the outgoing port, just sent a mail, hoping they can activate it...