2014-06-07 3 views
3

У меня есть проблема, когда я использую push Notification, он работает, когда я использую разработку, но когда я хочу использовать его для реального, это не сработает.apple push notification - PHP

Ck изготовлен для производства.

Когда я использую его, результат: Message successfully delivered Но мой телефон не получить сообщение

<?php 

pushNotification('wow2','DeviceToken'); 

function pushNotification($theMessage, $theDeviceToken) 
{ 

     // Put your device token here (without spaces): 
    $deviceToken = $theDeviceToken;  

    // Put your private key's passphrase here: 
    $passphrase = 'Code'; 

    // Put your alert message here: 
    $message = $theMessage; 

    //////////////////////////////////////////////////////////////////////////////// 

    $ctx = stream_context_create(); 
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); 
    stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

    // Open a connection to the APNS server 
    $fp = stream_socket_client(
     'ssl://gateway.push.apple.com:2195', $err, 
     $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

    if (!$fp) 
     //exit("Failed to connect: $err $errstr" . PHP_EOL); 
    exit("" . PHP_EOL); 
    //echo 'Connected to APNS\n' . PHP_EOL; 

    // Create the payload body 
    $body['aps'] = array(
     'alert' => $message, 
     'sound' => 'default' 
     ); 

    // Encode the payload as JSON 
    $payload = json_encode($body); 

    // Build the binary notification 
    $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 

    // Send it to the server 
    $result = fwrite($fp, $msg, strlen($msg)); 

    if (!$result) 
     echo 'Message not delivered' . PHP_EOL; 
    else 
     echo 'Message successfully delivered' . PHP_EOL; 

    fclose($fp); 


} 
?>  

Может кто-нибудь увидеть, что это не так? :)

ответ

1

есть 3 типа проблемы, с которыми сталкиваются в здесь APNS

  1. ваш маркер устройства не соответствует
  2. ваш .pem недействительный, причина в том, что файлы .p12 и .cer повреждены несколько раз, поэтому удалите файл .p12 и .cer и создайте снова один раз.
  3. не стоит в состоянии ответить, но случайно это будет происходить - проверить ваше уведомление устройство ON/OFF
+0

u нужна какая-то ссылка, используйте это http://stackoverflow.com/questions/22717275/apns-push-notifications-not-working-on-production, http://stackoverflow.com/ вопросы/17896979/APNs-PUSH-уведомления-это-не-рабочий-с продакшн-сертификат –

0

Я думаю, что это проблема с вашим токеном устройства. Если на вашем сервере установлен недопустимый токен устройства, он не получит уведомление. После того как вы удалили недействительный токен устройства с вашего сервера, он будет работать.

То же самое случилось со мной, и это заняло много времени, чтобы найти решение.

+0

Я просто попытался с некоторыми из моих друзей, но все равно не будет работать :/ – Stof

+0

@Stof ok войти в консоль разработчика Apple и проверить с помощью идентификатора ур-яблока для приложения ur, которое активирует push-уведомление или нет – Shanthanu

0

Попробуйте использовать маркер устройства с жестким кодом вашего мобильного телефона.

После этого попробуйте использовать токен устройства с переменным или эхо-сигналом перед использованием.

// Поместите устройство маркера здесь (без пробелов):

$deviceToken = '0f744707bebcf74f9b7c25d48e3358945f6aa01da5dd43487462c7eaf61bbad78'; 
+0

Вот что я делаю :) – Stof

+0

Затем проверьте процесс генерации ck.pem и правильно загрузите их. –

+0

Я сделал это с развитием, и я сделал несколько раз, чтобы проверить, что это было сделано правильно. – Stof

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