服务器端徽章数量增加

马克思主义

我有这样的桌子

|------------|-----------|
|device_token|badge_count|
|------------|-----------|
|123456789   |3          |
|------------|-----------|
|987654321   |2          |
|------------|-----------|

我有PHP创建两个数组:

$query = mysql_query("SELECT * FROM push");
$deviceToken = array();
while($row = mysql_fetch_assoc($query)){
    $deviceToken[] = $row['device_token'];
    $badgeCount[] = $row['badge_count'];
}

然后,我将其插入为:

foreach($deviceToken as $key=>$value){
        echo $badgeCount[$key];

        $body['aps'] = array(
            'alert' => $message,
            'sound' => 'default',
            'badge' => $badgeCount[$key],
        );

        $payload = json_encode($body);

        $msg = chr(0) . pack('n', 32) . pack('H*', $value) . pack('n', strlen($payload)) . $payload;
        $result = fwrite($fp, $msg, strlen($msg));

        if (!$result){
            die( 'Message not delivered' . PHP_EOL);
        }
}

这将返回echo 3 2但是$payload不能成功提供正确的“徽章编号”

并且在推送通知中没有显示徽章编号。如果我更换'badge' => $badgeCount[$key]'badge' => 2徽章数量显示2?

有什么想法我做错了吗?

蜜糖

返回关联数组:

$query = mysql_query("SELECT device_token, badge_count FROM push");
$devices = array();
while($row = mysql_fetch_assoc($query)){
    $devices[] = $row;
}

遍历设备:

foreach($devices as $device){

        $body['aps'] = array(
            'alert' => $message,
            'sound' => 'default',
            'badge' => (int)$device['badge_count'],//very important cast !!!
        );

        $payload = json_encode($body);

        $msg = chr(0) . pack('n', 32) . pack('H*', $device['device_token']) 
                      . pack('n', strlen($payload)) . $payload;

        $result = fwrite($fp, $msg, strlen($msg));

        if (!$result){
            die( 'Message not delivered' . PHP_EOL);
        }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章