ios - 有限数量的 iOS 设备收到的推送通知

标签 ios push-notification apple-push-notifications payload

我的应用程序中有推送通知服务,我的数据库中有 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/

相关文章:

ios - swift 3 : Filtering IOS notifications

javascript - 仅在 Safari 中发生的 XHR 请求的 DOM 异常 11

ios - CLLocation 管理器两次更新位置

ios - iOS 上的 Facebook 深层链接

react-native - 清除以前的世博会推送通知

ios - 创建配置文件时无法选择苹果证书

ios - iOS 应用程序是否有可能以编程方式知道设备是否与 APNS 建立了事件连接?

curl - Apple 推送通知 curl : (16) Error in the HTTP2 framing layer

objective-c - 为什么应用程序没有在 iOS 8 中注册推送通知?

ios - 是否可以通过远程通知的方式打开iOS应用?