我使用PHP获取一个device_ids数组,
并使用此代码将iOS推送到每个人 -
问题 - 当device_ids(deviceTokens
)数组为2-3 device_ids
时,所接收的设备会被推送。但是当deviceTokens
数组长约300 device_id
时,deviecs没有收到推送通知。
可能是什么问题?我是PHP
的新手
(这个问题已被问过几次,但答案没有反映出我面临的问题)
$customers_ios = "SELECT * FROM `gcm_user` WHERE `gcmregios` <> '0' and `preference` = '1'";
$c_ios = mysql_query($customers_ios);
while($bd = mysql_fetch_array($c_ios)) {
$deviceTokens[]= $bd['gcmregios'];
}
$arrlength = count($deviceTokens);
//echo $arrlength;
// Put your private key's passphrase here:
$passphrase = 'mypassphrase';//'PushNotification';
//adhoc_id already setup above
$message = $adhoc_desc;
$title = $adhoc_title;
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'PushDistCertificates.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
//'ssl://gateway.sandbox.push.apple.com:2195'
// 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)
continue;
// Create the payload body
$body['aps'] =
array(
'alert'=> $title,
'message' =>
array('ADHOC' =>
array('ADHOC_ID' => $adhoc_id,
'ADHOC_TITLE' => $title,
'ADHOC_DESCRIPTION' => $message,
)
),
'sound'=>'default'
);
// Encode the payload as JSON
$payload = json_encode($body);
foreach($deviceTokens as $ios_token){
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $ios_token)) . pack("n",strlen($payload)) . $payload;
$result = fwrite($fp, $msg);
}
// Close the connection to the server
fclose($fp);
答案 0 :(得分:0)
我们遇到的类似问题,交叉检查数据库中的所有设备ID,我们发现设备ID为&#34;模拟器&#34;这是xcode中虚拟设备的设备ID。在开发期间,DEV团队可能已经在模拟器中进行了测试,并且APNS越早识别出此ID,它拒绝所有请求。可能只是针对我们的具体问题,交叉检查会有所帮助。