GCM не получает на устройствах на базе ColorOS

У меня есть приложение для Android, которое отправляет и получает сообщения FCM (Google Firebase Messages).

Он отлично работает, так как я могу получать сообщения, когда мое приложение не находится в forground или не использует его, так как на нем запущена служба.

К сожалению, он не работает, когда я не запускаю приложение или его в фоновом режиме на некоторых смартфонах, таких как OPPO, VIVO или, что более вероятно, работает на ColorOS.

В чем может быть проблема? мы пробовали, но то же самое происходит и с WhatsApp

Ниже мой сервисный код:

package com.msb.launcher.services;

import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;

import com.msb.auth.utils.Keys;
import com.msb.auth.utils.LogUtils;

public class MessagingService extends Service {

    public static final String EXTRA_AUTH_TOKEN = "EXTRA_AUTH_TOKEN";
    public static final String EXTRA_FIREBASE_ID_TOKEN = "EXTRA_FIREBASE_ID_TOKEN";

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            LogUtils.i("Service running.");
            sendEmptyMessageDelayed(100, 500);

        }
    };

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        LogUtils.i("onStartCommand");
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        onDestroy();
        super.onTaskRemoved(rootIntent);
        try {
            handler.removeCallbacksAndMessages(null);
            sendBroadcast(new Intent(Keys.ACTION_RESTART_SERVICE));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    @Override
    public void onDestroy() {
        LogUtils.i("Service Destroy");
        handler.removeCallbacksAndMessages(null);
        sendBroadcast(new Intent(Keys.ACTION_RESTART_SERVICE));
        super.onDestroy();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        LogUtils.i("Messaging Service Started");
        handler.sendEmptyMessage(100);
    }
}

0 ответов

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