我的应用程序中有推送通知服务,我的数据库中有 600 个 token ,不幸的是推送通知仅由 30 个 token 接收。 我得到了我的 iPad token 并将它放在数据库的第一行,我收到了推送通知,我尝试测试是否收到了所有 token ,所以我将它(相同的 token )放在第 35 条记录中,我发送推送通知,我的 iPad 没有收到。 我正在处理生产推送通知(没有沙箱)而不是开发。
$sql="Select apns_devices.pid, apns_devices.appname, apns_devices.appversion, apns_devices.devicetoken, apns_devices.devicemodel, apns_devices.deviceversion, apns_devices.pushbadge, apns_devices.pushalert, apns_devices.pushsound, apns_devices.development, apns_devices.`status`, apns_devices.created, apns_devices.modified, apns_devices.`type`
From apns_devices
Where apns_devices.`status` = 'active' AND apns_devices.pushalert = 'enabled' AND apns_devices.development = 'production' ";
$result=mysql_query($sql);
$payload = '{"aps":{"alert":"'.$message.'","sound":"default","badge":"+1"}}';
$i=0;
while ($deviceToken = mysql_fetch_array($result1)) {
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', ''.$deviceToken[3].'') . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
$i++;
}
echo $i;
echo $i 返回 600,这是数据库中的 token 数,但并非所有设备都收到推送通知。
请帮忙。
最佳答案
您的数据库中的某些设备 token 是否可能无效(或者至少在生产环境中无效,如果您的数据库中有一些沙盒设备 token 就会出现这种情况)。
为了找到无效 token ,您必须使用增强的二进制格式(包括消息 ID 和到期时间),Apple 会向您发送无效 token 的错误响应。在您当前使用的简单格式中,Apple 会在遇到无效 token 时简单地关闭连接。这就是未传递该无效 token 后的消息的原因。
关于ios - 有限数量的 iOS 设备收到的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20544191/