2

我能够连接到 apns 并将值插入数据库以检查我是否收到“消息已传递”消息,但它没有显示任何通知....谁能告诉我我错在哪里...

$deviceToken = '**********************';


$payload['aps'] = array('alert' => 'This is the alert text', 'badge'
=> 1, 'sound' => 'default'); $payload = json_encode($payload);

$passphrase = '***';


$apnsHost = 'gateway.sandbox.push.apple.com'; $apnsPort = 2195; $apnsCert = 'ck.pem';

$streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); stream_context_set_option($streamContext, 'ssl', 'passphrase',$passphrase );

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

if (!$apns)
    {
     $check = $errorString;      $query = "INSERT INTO tbl_checkData(friend_nickname) VALUES('$check') ";    $result=mysql_query($query);           } else{ 
     $check = "connected";   $query = "INSERT INTO tbl_checkData(friend_nickname) VALUES('$check') ";    $result=mysql_query($query);    }

$apnsMessage = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;

//chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;

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

if (!$result)
    {
     $check = 'Message not delivered' ;      $query = "INSERT INTO tbl_checkData(friend_nickname) VALUES('$check') ";    $result=mysql_query($query);       
            } else {     $check = 'Message delivered' ;      $query = "INSERT INTO tbl_checkData(friend_nickname) VALUES('$check') ";    $result=mysql_query($query);    
     }

enter code here

fclose($apns);
4

2 回答 2

3

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

从此网址中删除沙箱,它将运行...我已经测试过了...

于 2012-05-04T11:33:57.383 回答
0

确保: 1-您的应用程序未运行,因为推送通知仅用于在应用程序关闭时通知使用。2-设备的设备令牌是正确的还要确保推送通知证书也为同一设备配置。3-确保您的设备已连接到互联网。

你可以看看这个链接。

推送通知

于 2012-04-23T10:31:39.260 回答