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);
}
}