Не получаю уведомления на Moto E4 plus - PullRequest
3 голосов
/ 16 апреля 2019

Один из клиентов использует наше приложение, которое представляет собой приложение для видеовызовов на устройстве 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'
        }
}

Мы заметили, что когда настройки автозапуска отключены, класс обслуживания не может открыть приложение. Но нужно быть уверенным, прежде чем мы передадим это клиенту.

...