Уведомления FCM помогают поддерживать сервисы приложений, но сообщения данных FCM не - PullRequest
0 голосов
/ 04 апреля 2019

Я пытался поддерживать сервисы переднего плана моего приложения на Oreo, просматривая сервисы своего приложения, так как я внедряю сообщения данных FCM, но я обнаружил, что приложение становится неактивным, этого не происходит, когда я отправляю сообщения уведомления FCM.

Это код, который я использую для перехвата сообщений с данными:

public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    // Cordova Callback
    FCMPlugin.sendPushPayload(data);

    Intent resultIntent = new Intent(this , FCMPluginActivity.class);
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    PendingIntent resultPendingIntent = PendingIntent.getActivity(this,0 , resultIntent,PendingIntent.FLAG_ONE_SHOT);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        mBuilder = new Builder(this, "0");
    }else{
        mBuilder = new Builder(this);
    }

    mBuilder.setSmallIcon(getApplicationInfo().icon)
        .setContentTitle(title)
        .setContentText(messageBody)
        .setAutoCancel(false)
        .setContentIntent(resultPendingIntent);

    mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){

        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel notificationChannel = new NotificationChannel("0", "Playback status", importance);
        notificationChannel.setShowBadge(false);

        assert mNotificationManager != null;
        mNotificationManager.createNotificationChannel(notificationChannel);
    }

    assert mNotificationManager != null;
    mNotificationManager.notify(0, mBuilder.build());
}

Что я могу сделать, чтобы сохранить службы переднего плана моего приложения в Oreo с помощью сообщений данных FCM?

1 Ответ

0 голосов
/ 09 апреля 2019

После просмотра новостей Google об ограничениях использования батареи я успешно исправил это, смешав свой код с Foreground Service, и кажется, что сообщений с данными FCM было недостаточно, чтобы поддерживать мое приложение в живых.

...