Отправка разных кнопочных уведомлений для каждого устройства
-
21-12-2019 - |
Вопрос
Я установил PHP-скрипт, который отправит Push-уведомление.Все работает нормально, и он посылает же сообщение каждому устройству в массиве.Но что я ошибаюсь, что если я хочу отправить другое сообщение сделать каждое устройство (в зависимости от предпочтений устройств)?
Что будет правильным подходом здесь?Моя первая мысль состоит в том, чтобы вызвать функцию кнопки для каждого устройства отдельно вместо того, чтобы вызовать его один раз и отправлять массив устройств в GCM?
Это код, который я использую, поэтому, пожалуйста, посоветуйте ...
function sendPushNotificationToGCM($registatoin_ids, $message) {
//Google cloud messaging GCM-API url
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message,
);
// Google Cloud Messaging GCM API Key
define("GOOGLE_API_KEY", "my_api_key");
$headers = array(
'Authorization: key=' . GOOGLE_API_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
curl_close($ch);
return($result);
}
$devices = array();
while($results = $result->fetch_array()) {
$devices[] = $results['dev_reg_id'];
}
//return $devices;
$pushMessage = $message;
$message = array("m" => $pushMessage);
$pushStatus = sendPushNotificationToGCM($devices, $message);
. Решение
Вы не можете отправлять разные сообщения на разные устройства в том же http-запросе на сервер GCM.Если каждое устройство требует уникального сообщения, также потребуется уникальный вызов вашей функции sendPushNotificationToGCM
.Если некоторые устройства разделяют одно и то же сообщение, вы можете отправить это сообщение в тот же вызов функции.