У меня есть приложение, которое можно использовать для звонков. Когда один пользователь хочет вызвать другому, мой сервер отправляет этот json в «https://fcm.googleapis.com/v1/projects/MyProject/messages:отправить
{
"validate_only":false,
"message": {
"data": {
"SomeData":"123"
},
"notification":null,
"android": {
"collapse_key":null,
"priority":"HIGH",
"ttl":"60s",
"restricted_package_name":null,
"data": {
"SomeData":"123"
},
"notification":null
},
"webpush": {
"headers": {
"Urgency":"high"
},
"data":null,
"notification":null,
"fcm_options":null
},
"apns": {
"headers": {
"apns-priority":"10"
},
"payload":null
},
"token":"cU4RS3R142s:APA91bF6fDme6mxw9FcocLvXYepkpqYHbctZ0arEw43-6uhZCglyQ9qfndfmeeNE9oALkpzQ7boh47unQRoTMSUhy6ynddo6r8RcgYl9yuj07NCgDcSUfY4__YNSxpeGziXqQnDzGMZx",
"topic":null,
"condition":null
}
}
Он отлично работает, пока приложение находится на переднем плане, и через несколько минут после того, как я смахнул его из списка последних. Но примерно через 20 минут FirebaseMessagingService.OnMessageReceived
перестает вызываться, и я получаю это в logcat.
01-23 10:19:59.670: I/FirebaseInitProvider(7162): FirebaseApp initialization successful
01-23 10:19:59.717: I/MyTag(7162): Application: OnCreate
01-23 10:19:59.896: W/ActivityManager(1398): Background start not allowed: service Intent { act=com.google.firebase.MESSAGING_EVENT pkg=com.companyname.MyApp.Android cmp=com.companyname.MyApp.Android/com.companyname.myapp.android.notificationservice (has extras) } to com.companyname.MyApp.Android/com.companyname.myapp.android.notificationservice from pid=7162 uid=10179 pkg=com.companyname.MyApp.Android
01-23 10:19:59.897: E/FirebaseInstanceId(7162): Error while delivering the message: ServiceIntent not found.
А вот код моего приложения
public override void OnCreate()
{
base.OnCreate();
WriteLog("Application: OnCreate");
InitializePlayService();
}
private void InitializePlayService()
{
FirebaseApp.InitializeApp(this);
MyFirebaseIDService.SendRegistrationToServer(FirebaseInstanceId.Instance.Token);
}
Как я могу заставить его работать?
@SushiHangover 7.1, но 5.1 тоже не работает. Xiaomi, а 5.1 это meizu. Я проверил настройки батареи и разрешения. У WhatsApp есть некоторые специальные разрешения, но у Telegram нет, и Telegram работает нормально. Я проверил источники Telegram, часть FCM выглядит так же, как моя, но Telegram делает много вещей в приложении OnCreate и, возможно, где-то еще.
Какую версию библиотеки Firebase вы используете?
@SushiHangover Я использую Xamarin.Firebase.Сообщения 60.1142.1. Он говорит, что использует Firebase 11.4.2, но я не знаю, как это проверить. Мой Android SDK обновлен.
Что это за OEM-устройство и на каком уровне API оно работает? (Примечание. Ряд OEM-производителей внедрили ограничения на фоновые уведомления (в версии 8.0+ вы должны иметь возможность внести приложение в белый список в настройках (Защищено, Аккумулятор или ...). Это также связано с ограничением фонового выполнения в API 28+