Счетчик push-уведомлений не обновляется на ios

1

Значок счетчика уведомлений Push не увеличивается. Он всегда показывает 1. Я использовал php для отправки push с сервера, и вот следующий код:

    $apnsHost = 'gateway.sandbox.push.apple.com';
    $apnsCert = 'project_dev.pem';

    $apnsPort = 2195;
    $badgecount=1;

    $streamContext = stream_context_create();

    stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
if (!$apns){
    exit("Failed to connect: $error $errorString" . PHP_EOL);
}else{
    $messageHeader = (strlen($message) > 26) ? substr($message,0,26).'...' : $message;

$msgd=explode(':',$message);

$payload['aps'] = array('alert' => $messageHeader,'badge' => $badgecount, 'sound' => 'default','mess'=>$fromUserId.'||'.$userNamee.'||'.$userimage.'||'.$message,'type'=>'reply', 'unread_count'=>$unread_count);

$output = json_encode($payload);
$token = pack('H*', str_replace(' ', '', $token));

$apnsMessage = chr(0) . chr(0) . chr(32) . $token . chr(0) . chr(strlen($output)) .     $output;

fwrite($apns, $apnsMessage);

fclose($apns);
}
Теги:
push-notification
apple-push-notifications

2 ответа

0
Лучший ответ

В вашем коде вы всегда отправляете свой значок, потому что вы получаете только значок $ badgecount 1 в сторону приложения.

вам нужно использовать следующий тип для отправки значка уведомлений.

$query = "SELECT badgecount FROM pushnotifications WHERE device_token = '{$device_token}'";
    $query = $this->db->query($query);
    $row = $query->row_array();
    $updatequery = "update pushnotifications set badgecount=badgecount+1 WHERE device_token ='{$device_token}'";
    $updatequery = $this->db->query($updatequery);
    $device = $device_token;
    $payload['aps'] = array('alert' => $pushmessage, 'badge' =>$row["badgecount"]+1, 'sound' => 'default');
    $payload = json_encode($payload); 

Думаю, теперь вы более четко знаете код выше.

1

badgecount всегда посылает сервер side.it кажется, что вы отправляете $ badgecount = 1; always.Update его с другим значением, а затем check.It определенно отражают на IOS.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню