php - 增加服务器端的角标(Badge)数量

标签 php ios push-notification

我有一张这样的 table

|------------|-----------|
|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);
        }
}

这将返回回显 3 2。但是 $payload 没有成功给出正确的“角标(Badge)编号”

并且在推送通知中没有显示角标(Badge)编号。如果我将 'badge' => $badgeCount[$key] 替换为 'badge' => 2 角标(Badge)编号显示 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);
        }
}

关于php - 增加服务器端的角标(Badge)数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24514050/

相关文章:

android - 如何删除已经发送的推送通知?

android - 如何在 Django 中创建推送通知?

firebase - 已收到 Xamarin Forms 推送通知但未显示/出现

php - 重新创建/找到 Joomla/Community Builder 'Latest Users' 模块。 MySQL/Joomla 中的日期

php - CodeIgniter SEO - 每种语言一个 URL

iphone - 使用 AVAudioPlayer 逐个播放一组声音

ios - 从相机/照片库上传 Ionic 应用程序图像

php - 计算差异超过 2 天的情况

php - 如何使用 phalcon 上传多个图像并将其名称存储在数据库中?

ios - 本地通知不触发后台获取