Один из клиентов использует наше приложение, которое представляет собой приложение для видеовызовов на устройстве Moto E4 plus. Мы показываем экран вызова, когда получаем push-уведомление FCM от сервера. Таким образом, для этого конкретного устройства она не получает вызов, когда приложение находится в фоновом режиме или убито. Она не проверяла, работает ли она, когда приложение работает на переднем плане.
Ниже приведен код, который мы используем в классе FirebaseMessagingService.
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.d("FirebaseMessaging", "onMessageReceived");
Intent intent = new Intent(AppConstants.INCOMING_CALL_BROADCAST_ACTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendImplicitBroadcast(MyFirebaseMessagingService.this,
intent);
}
private static void sendImplicitBroadcast(Context ctxt, Intent i) {
PackageManager pm = ctxt.getPackageManager();
List<ResolveInfo> matches = pm.queryBroadcastReceivers(i, 0);
for (ResolveInfo resolveInfo : matches) {
Intent explicit = new Intent(i);
ComponentName cn =
new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName,
resolveInfo.activityInfo.name);
explicit.setComponent(cn);
ctxt.sendBroadcast(explicit);
}
}
Ниже приведена настройка gradle.
android {
compileSdkVersion 27
buildToolsVersion '27.0.2'
defaultConfig {
multiDexEnabled true
applicationId "com.example.videocallapp"
minSdkVersion 19
targetSdkVersion 27
versionCode 48
versionName "2.2"
}
dexOptions {
javaMaxHeapSize "2g"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Мы заметили, что когда настройки автозапуска отключены, класс обслуживания не может открыть приложение. Но нужно быть уверенным, прежде чем мы передадим это клиенту.