0

Я делаю pushnotification для передачи в сберегательной книжке. Push works, но ничего не показывает для pushnotification, и если обновление статически, переключая заднюю часть прохода, я могу получить обновленный проход. Это код я использую:
Отправить push на многие устройства для передачи

<?php 


    // Provide the Certificate and Key Data. 
    $cert = '../certificates/Certificates.pem'; 

    $payload = json_encode (array("aps" => "")); 
    error_log('payload :'.$payload,0); 


    // Create the and config the socket context. 
    $streamContext = stream_context_create(); 
    stream_context_set_option($streamContext, 'ssl', 'local_cert', $cert); 
    $password = ''; 

    if (strlen($password)) 
     stream_context_set_option($tContext, 'ssl', 'passphrase', $password); 


    // Open the Connection to the APNS Server. 
    $ConnectAPNS = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $streamContext); 

$query1 = mysql_query("select deviceID from registration"); 
$row1 = mysql_fetch_array($query1); 
$deviceID = $row1['deviceID']; 

if(!empty($deviceID)){ 
$query2 = mysql_query("select pushToken from device "); 

while($row2 = mysql_fetch_array($query2)){ 

    $pushToken= $row2['pushToken']; 

    // Compose and pack the push message 
    $apns_message = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $pushToken)) . chr(0) . chr(mb_strlen($payload)) . $payload; 

    $success = fwrite($ConnectAPNS, $apns_message); 

    // Check if we were able to open a socket. 
    if ($success) 
     error_log(date('d-m-Y hh:ii:ss', time()) . ': APNS Message successfully sent to push token ' . $pushToken, 0); 
    else 
     error_log(date('d-m-Y hh:ii:ss', time()) . ': Push error:' . $err . ': ' . $errstr); 

    error_log('Stream Response: ' . print_r($success, true), 0); 
} 
} 
    // Close the Connection to the Server. 
@socket_close($ConnectAPNS); 
fclose ($ConnectAPNS); 
include("feedback.php"); 
?> 
` 


Используя этот код, может быть 30 МНБА, что я могу получить pushnotification для обновления прохода! Это ошибка, которую я получаю: `7 мая 13:33:21 CamMobs-iPod4 passd [21865]: Слишком много слишком торопится для pass.cam-mob.passbookpasstest - будет применяться ограничение жесткой скорости.


Как нажимать без этой ошибки?

ответ

1

Ваш код открывает новое соединение каждый раз, когда вы повторяете цикл while.

Попробуйте открыть соединение перед циклом, напишите запросы в сокет в цикле, а затем закройте сокет в конце скрипта. Это позволит вам быстро избивать шлюз несколькими запросами в течение секунды.

+0

Я пытаюсь уже, но он петли 3 раза, а не работает! – malinchhan

+0

вы смотрите код, который я редактирую выше! – malinchhan

+0

Что не работает? Если вы получаете одно и то же сообщение об ошибке, это может быть связано с тем, что Apple все еще дросселирует вас из-за вашего более раннего поведения! Вы можете оставить его на некоторое время или выдать другой сертификат и попробовать с ним (вам нужно будет снова переиздать все пропуски с новым сертификатом). – PassKit

Смежные вопросы