我正在向PHP發送推送通知。在發送來自PHP的推送通知時關於pack()的警告
成功建立連接,但它會給錯誤我想:
Connection Established
Warning: pack() [function.pack]: Type i: too few arguments in C:\xampp\htdocs\BiiMe\checkAvailableProduct.php on line 68
M{"aps":{"alert":"BiiMe finds product for you","badge":"3","sound":"default"}} M{"aps":{"alert":"BiiMe finds product for you","badge":"3","sound":"default"}}
Warning: socket_close(): supplied resource is not a valid Socket resource in C:\xampp\htdocs\BiiMe\checkAvailableProduct.php on line 79
我的代碼是:
function pushToIphone($deviceToken, $badge){
ini_set('display_errors','on');
error_reporting(E_ALL);
// $apnsHost = 'gateway.sandbox.push.apple.com';
$apnsHost = 'gateway.push.apple.com';
$apnsPort = 2195;
$pem_path = dirname(__FILE__);
$pem_path = $pem_path .'\cert';
$apnsCert = $pem_path.'\apns_cer.pem';
echo $apnsCert."<br/>";
$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);
if($apns) {
echo "Connection Established<br/>";
$payload = array();
$payload['aps'] = array('alert' => 'BiiMe finds product for you', 'badge' => $badge, 'sound' => 'default');
//$payload['server'] = array('serverId' => $serverId, 'name' => $serverName);
$payload = json_encode($payload);
apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
//$apnsMessage = chr(0) . chr(0) . chr(32) . pack('nic*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
echo $apnsMessage;
print_r($apnsMessage);
fwrite($apns, $apnsMessage);
} else {
echo "Connection fail<br/>";
}
//socket_close($apns);
socket_close($apns);
fclose($apns);
}
那我該怎麼辦?那麼套接字警告呢? – Siten 2012-01-31 04:56:44
+1爲您的答案 – Siten 2012-02-06 05:57:43