3

I have a problem when i use push Notification, It works when i use develop, but when i want to use it for real, it won't work.

The ck is made for production.

When i use it, the result is: Message successfully delivered But my phone do not receive the message

<?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);


}
?>      

Can anyone see what's wrong? :)

Stof
  • 33
  • 1
  • 4

3 Answers3

1

there are 3 types of problem faced at here on APNS

  1. your Device token does not match
  2. your .pem does not a valid one, the reason is .p12 and .cer files are corrupted some times , so delete the .p12 file and .cer and create again once.
  3. is not a worth able answer but by chance it will be occur -- check your device notification is ON/OFF
RNK
  • 5,582
  • 11
  • 65
  • 133
Anbu.Karthik
  • 82,064
  • 23
  • 174
  • 143
  • u need some reference use this http://stackoverflow.com/questions/22717275/apns-push-notifications-not-working-on-production, http://stackoverflow.com/questions/17896979/apns-push-notifications-is-not-working-with-production-certificate – Anbu.Karthik Jun 07 '14 at 10:50
0

I think it's a problem with your Device Token. If you have an invalid device token in your server, it will not receive the notification. Once you have deleted the invalid device token from your server, then it will work.

The same thing happened to me, and it took a long time to find the solution.

cHao
  • 84,970
  • 20
  • 145
  • 172
Shanthanu
  • 421
  • 1
  • 9
  • 31
  • I've just tried with some of my friends to,but still won't work :/ – Stof Jun 07 '14 at 08:57
  • @Stof ok login with apple developer console and check with ur apple bundle identifer for ur app that push notification enabled or not – Shanthanu Jun 07 '14 at 09:01
0

Try with Hardcoded device token of your device mobile token.

After that try with variable or echo device token before using.

// Put your device token here (without spaces):

$deviceToken = '0f744707bebcf74f9b7c25d48e3358945f6aa01da5dd43487462c7eaf61bbad78';
Ram S
  • 793
  • 12
  • 21