FCM Android: фоновый запуск не разрешен

У меня есть приложение, которое можно использовать для звонков. Когда один пользователь хочет вызвать другому, мой сервер отправляет этот 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);
        }

Как я могу заставить его работать?

Что это за OEM-устройство и на каком уровне API оно работает? (Примечание. Ряд OEM-производителей внедрили ограничения на фоновые уведомления (в версии 8.0+ вы должны иметь возможность внести приложение в белый список в настройках (Защищено, Аккумулятор или ...). Это также связано с ограничением фонового выполнения в API 28+

SushiHangover 23.01.2019 04:59

@SushiHangover 7.1, но 5.1 тоже не работает. Xiaomi, а 5.1 это meizu. Я проверил настройки батареи и разрешения. У WhatsApp есть некоторые специальные разрешения, но у Telegram нет, и Telegram работает нормально. Я проверил источники Telegram, часть FCM выглядит так же, как моя, но Telegram делает много вещей в приложении OnCreate и, возможно, где-то еще.

Atomosk 23.01.2019 05:19

Какую версию библиотеки Firebase вы используете?

SushiHangover 23.01.2019 05:21

@SushiHangover Я использую Xamarin.Firebase.Сообщения 60.1142.1. Он говорит, что использует Firebase 11.4.2, но я не знаю, как это проверить. Мой Android SDK обновлен.

Atomosk 23.01.2019 07:23
0
4
336
0

Другие вопросы по теме