Envio de notificações push diferentes para cada dispositivo
-
21-12-2019 - |
Pergunta
Eu configurei o script php que enviará notificação push.Tudo funciona bem e envia a mesma mensagem para cada dispositivo do array.Mas o que me incomoda é: e se eu quiser enviar mensagens diferentes para cada dispositivo (dependendo das preferências do dispositivo, por exemplo)?
Qual seria a abordagem correta aqui?Meu primeiro pensamento é chamar a função pushNotification para cada dispositivo separadamente, em vez de chamá-la uma vez e enviar uma série de dispositivos para o GCM.
Este é o código que estou usando, então por favor informe ...
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);
Solução
Você não pode enviar mensagens diferentes para dispositivos diferentes na mesma solicitação HTTP ao servidor GCM.Se cada dispositivo exigir uma mensagem exclusiva, também será necessária uma chamada exclusiva para o seu sendPushNotificationToGCM
função.Se alguns dispositivos compartilharem a mesma mensagem, você poderá enviar essa mensagem para eles na mesma chamada de função.