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);
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top