Estou tentando descobrir como enviar notificações push para dispositivos Android com PHP.
Procurei em vários sites e este foi o último que tentei:
function sendFCM($registrationIds, $notifTitle, $notifDesc, $notifChannel, $data) {
$client = new Google_Client();
$client->setAuthConfig('bla.json');
$client->addScope('https://www.googleapis.com/auth/firebase.messaging');
$client->refreshTokenWithAssertion();
$token = $client->getAccessToken();
$accessToken = $token['access_token'];
$headers = array (
'Authorization: Bearer ' . $accessToken,
'Content-Type:application/json'
);
$notification = array
(
"title" => $notifTitle,
"body" => $notifDesc,
"icon" => "ic_logo_circle",
"android_channel_id" => $notifChannel
);
$fields = array
(
'notification' => $notification,
'data' => $data,
'registration_ids' => $registrationIds
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/v1/projects/projectname/messages:send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch);
print($result);
curl_close($ch);
}
$notifData = array(
"title" => "this is the title",
"msg" => "the desc",
"image" => "whatever.jpg"
);
sendFCM($registrationIds, "Antwort auf Kommentar", "Cornholio hat dir geantwortet", "channel_reply_comment", $notifData);
$registrationIds
contém uma matriz de vários tokens de dispositivos Android
{ "error": { "code": 400, "message": "Payload JSON inválido recebido. Nome desconhecido "notification": Não é possível encontrar o campo.\nPayload JSON inválido recebido. Nome desconhecido "data": Não é possível encontrar o campo.\nPayload JSON inválido recebido. Nome desconhecido "registration_ids": Não é possível encontrar o campo.", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [ { "description": "Payload JSON inválido recebido. Nome desconhecido "notification": Não é possível encontrar o campo." }, { "description": "Payload JSON inválido recebido. Nome desconhecido "data": Não é possível encontrar o campo." }, { "description": "Payload JSON inválido recebido. Nome desconhecido "registration_ids": Não é possível encontrar o campo." } ] } ] } }
A API do FCM v1 não espera um
registration_ids
campo. Você vai querer otokens
campo em vez disso.Para isso e muito mais, mantenha a documentação sobre o envio de mensagens à mão