2010-11-19 12 views
0

de Tepki hatası. Gelişmiş push bildirim formatı kullandım. ancak APNS dokümanları tarafından belirtilen yanıtı alamıyorum. Üç basamakta cevap alıyorum (genellikle 133, 132, 154, 138 vb.). 133, 1, 3, 3'tür. Fakat şimdi 139'u da aldım. Bu yüzden cevabımın yorumlanmasının yanlış olduğunu düşünüyorum. Ama yanlış olduğu yere gitmiyorum. Ve önemli olan bu yanıtları alıyorum olsa da Uyarısı zorlanıyor ve iPhone'umun yanı sıra iPad'de de bildirim alıyorum.Enhanced Apple Push Notification: i APNS sunucuda bir uyarı bildirimi itmek açmamı PHP bir proje üzerinde çalışıyorum, sunucu server

$payload['aps'] = array('alert' => $message, 'badge' => 1, 'sound' => 'default'); 

$apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195; // default port 

$apnsCert = 'apns-dev.pem'; // APNS crtificate. 

$passPhrase = ''; 

$streamContext = stream_context_create(); 

stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 

stream_context_set_option($streamContext, 'ssl', 'passphrase', $passPhrase); 

try{ 

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

if (!$apns) { 
    print "Failed to connect {$error} {$errorString}\n"; 
} 
else { 
    // Sending the payload 

    $apnsMessage = chr(0) . pack('n', 1) . pack('n', $nid) . pack('n', time() + 604800) . pack('n', 32) . pack('H*', str_replace(' ', '', $alert_device_token)) . pack('n', strlen($payload)) . $payload; 

    echo 'APNS Message: ' . $apnsMessage; 

    $fwrite = fwrite($apns, $apnsMessage); 

    echo 'APNS response: ' . $fwrite; 

Ve bu idam zaman ben şu yanıtı tarayıcısı üzerinde yazılı var: şu şekildedir:

Benim kodudur

APNS Mesaj: = YA òc6-U: OYS Th ÷ a ‡ Ú0ßqšÊzÂífÕnZ` { "aps": { "uyarı": "Sizin EUR \/USD SAT uyarı fiyat ulaşıldı!", "rozet": 1, "ses": "varsayılan"}} APNS yanıt: 139

Herkes lütfen bana bu 139'un ne anlama geldiğini söyleyin. Burada yanlış bir şey yapıyorum.

+0

bunu sabit eğer sorabilirsem. Böyle bir şey alıyorum. – user633268

+0

Merhaba, Evet Bu durumdan çıktım. Bunun yerine gelişmiş yükü kullanmalısınız, yani normal ödeme yükü – srahul07

+0

aşağıda dubbelugh doğrudur: u aldığınız sayı fwrite tarafından yazılan byte'tır. Ancak, hata kontrolü için kullanabilirsiniz çünkü 0 yanıtı geri alırsanız, bunun nedeni, yazıcının bir şey yazamadığı anlamına gelir, muhtemelen Apple sunucu bağlantısını kapattı. Yani sorun olan 0 cevabı ile yazmıyor, başarılı bir şekilde gönderilen bir önceki yazım, ama elmanın sevmediği bir şey vardı, bu yüzden sunucu bağlantısını kapattılar. SELECT deyimiyle "ORDER BY id" komutunu kullanırsanız, problemin nerede meydana geldiği hakkında bilgi edinebilir ve buradan PUSH'ye devam edebilirsiniz. – jsherk

cevap

1

yankılandı "139" fwrite dönüş değeri(). Bu fwrite tarafından yazılan bayt sayısı var()

Bkz: PHP: fwrite

İlgili konular