Я отправляю уведомления через данные, а не уведомления. И приоритет данных по умолчанию нормальный.
Когда я использую admin.messaging().send()
, он даже не отправляет большую часть времени. Но я не могу настроить приоритет с помощью admin.messaging().sendToDevice()
, так как он принимает только «данные» и «уведомления». И когда я использую этот метод, он в основном даже не отправляет сообщение. Я не знаю, почему send () тоже не работает, и я хочу знать, как сделать сообщение высоким приоритетом.
Проверенные телефоны: Xiaomi, ZTE.
Код функции облака, почти никогда не отправляется:
const payload =
{
"delay_while_idle": false,
"android":
{
"priority": "high",
"ttl":0
},
data:
{
is_there_new_notification: "true"
},
token: token
};
return admin.messaging().send(payload)
.then((response) => {
// Response is a message ID string.
//console.log('Successfully sent message:', response);
return response;
}).catch((error) => {
// console.log('Error sending message:', error);
return error;
});
Код функции облака 2, не отправляет немедленно в режиме ожидания, иногда не отправляет, даже когда устройство не работает)
const payload = {
data:
{
is_there_new_notification: "true"
}
};
return admin.messaging().sendToDevice(token, payload).then((response) => {
// Response is a message ID string.
//console.log('Successfully sent message:', response);
return response;
})
.catch((error) => {
// console.log('Error sending message:', error);
return error;
});
Редактировать:
Сервисные коды Android:
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
super.onMessageReceived(remoteMessage);
Log.d(TAG, "onMessageReceived: " + remoteMessage.getData());
//This is just a string variable return "true" in string. it is being sent in order to notify there are notifications. We don't need its content.
if(remoteMessage.getData().get(getString(R.string.notification_is_there_new_notification))!= null)
{
FirebaseMethods.checkAndShowIfThereAreNotifications(context);
}
}
AndroidManifest:
<service
android:name=".FirebaseFCMService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Связанные ресурсы:
https://firebase.google.com/docs/cloud-messaging/concept-options
https://developer.android.com/training/monitoring-device-state/doze-standby.html