php
  • ios
  • push
  • 2012-11-21 2 views 0 likes 
    0

    푸시 알림을 여러 장치에 보내는 PHP 스크립트가 있습니다. 내용은 장치마다 다릅니다. 어떻게 든 첫 번째 요청 만 수신되므로 큐의 첫 번째 장치 만 푸시 알림을 수신하고 있습니다. 오류가 무엇입니까?첫 번째 푸시 알림 만받습니다 PHP

    $sql = "SELECT * FROM pushdevices"; 
    $query = mysql_query($sql); 
    $apnsHost = 'gateway.push.apple.com'; 
    $apnsPort = 2195; 
    $apnsCert = ...; 
    
    $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); 
    while($result = mysql_fetch_assoc($query)) { 
        [...] 
         $deviceToken = $result["deviceToken"]; 
          $alertBody = '...'; 
         $payload['aps'] = array('alert' => $alertBody, 'badge' => $badge, 'sound' => 'default'); 
         $payload = json_encode($payload); 
    
         if ($apns) 
         { 
          $apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload; 
          $is = fwrite($apns, $apnsMessage); 
    
          echo "sent: $deviceToken<br />"; 
         } 
         else 
         { 
          echo "Fehler!"; 
          var_dump($error); 
          var_dump($errorString); 
         } 
        } 
    } 
    fclose($apns); 
    ?> 
    

    출력에는 모든 장치로 보내지 만 첫 번째 장치 만 수신합니다. $ (fwrite)의 반환 값을 취하는 것은 처음에는 140이고 155는 오류 코드일까요?

    답변 해 주셔서 감사합니다.

    +1

    fwrite 반환 값은 쓰여진 바이트 수입니다. 첫 번째 글쓰기에 140이 있고 다른 요청에 155가 있다면 ... $ apnsMessage의 값을 로그에 남기십시오. – LombaX

    +0

    @LombaX 답을 주셔서 감사합니다. $ apnsMessage :'140 L "을 프린트하면 출력됩니다. "경고": "... 메시지 ...", "배지": 1, "소리": "기본값"}}이 경우 메시지는 다음과 같이 나타납니다. 및 155 ² '\t × \t ü "M"0 "]; üNî [êX"Bv "A \"aps \ ": \"경고 \ ": \"메시지 ... \ ", "012", "소리": \ "기본 \"}} "" – Dion

    +0

    그래, 이미 문제를 발견 했어, 어쨌든 고마워! – Dion

    답변

    1

    문제가 발견되었습니다. 잠시 후 $payload -variable을 재설정해야했습니다. 이제 작동 중입니다!

    +1

    예, 그냥 대답 했었지만 나를 기대 했어 ;-) – LombaX

    +0

    안녕, 어떻게 페이로드를 다시 설정합니까? 같은 문제가 있습니다. – Marcoc

    +0

    Im은 100 % 확신 할 수 없지만 루프의 끝 부분에서 $ payload = 0 또는 sth와 같은 변수를 다시 설정해야한다고 생각합니다. – Dion

    관련 문제