Я могу отправить уведомление, когда приложение находится на переднем и заднем плане.Но не удается отправить его, когда приложение убито, т.е. приложение не работает в фоновом режиме.Другие приложения на моем мобильном телефоне могут отправлять мне уведомления, даже если они работают в фоновом режиме.Я использую версию Oreo.
Я тоже заменил «уведомление» на «данные», что не имело значения.Я уже добавил пользовательское уведомление о методе onMessageReceived, оба «уведомления» и «данные» дают уведомление на переднем и на заднем плане.Разница лишь в том, что data работает на методе MessageReceived и в фоновом режиме.Но на обоих, уведомление не получено, когда приложение убито. Я попробовал следующий код на php.Что я делаю не так?
function sendPushNotification($token) {
$url = "https://fcm.googleapis.com/fcm/send";
$serverKey = 'AAAA.....theKey';
$title = "My App";
$body = "hello there!!";
$notification = array('title' =>$title , 'body' => $body, 'sound' => 'default', 'badge' => '1');
$arrayToSend = array('to' => $token, 'notification' => $notification,'priority'=>'high');
$json = json_encode($arrayToSend);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: key='. $serverKey;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
//Send the request
$response = curl_exec($ch);
//Close request
/* if ($response === FALSE) {
die('FCM Send Error: ' . curl_error($ch));
}*/
curl_close($ch);
// echo "<br>";
return $response;
}
Следующий метод onMessageReceived:
Для «уведомления»:
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d("apkflow","onMessageReceived Started");
if (remoteMessage.getNotification() != null) {
title = remoteMessage.getNotification().getTitle();
body = remoteMessage.getNotification().getBody();
Log.d("apkflow","title = " + title);
Log.d("apkflow","body = " + body);
}
}
Для «данных»:
title = remoteMessage.getData().get("title");
body = remoteMessage.getData().get("body");
ОБНОВЛЕНИЕ :: Я получил решение сейчас !!Это связано с обновлениями мобильного телефона.В мобильных устройствах, таких как Vivo, oppo, xiomi и т. Д., Когда приложение очищено, оно принудительно останавливает приложение, заставляя останавливать все службы.Таким образом, услуги FCM также остановлены, и никакое уведомление не получено на мобильном телефоне.Таким образом, для получения уведомления пользователь должен разрешить запуск приложения в фоновом режиме. Необходимо разрешить проверку «разрешить в фоновом режиме».Это решает проблему.Если проблема не устранена, оставьте комментарий !!