Как выполнить какое-то событие, если RN был убит? - PullRequest
0 голосов
/ 23 октября 2018

Не уверен, правильно ли я понимаю, но по этой ссылке

Доставка тихих уведомлений и запуск вашего приложения в фоновом режиме на устройстве пользователя.

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

В настоящее время я использую OneSignal, как показано ниже:

OneSignal.addEventListener('received', this.onReceived);

onReceived(store, notification) {
  store.dispatch(receivedNotification({ notification }));
}

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

Поэтому мой вопрос заключается в том, можно ли "разбудить" мое приложение RN в фоновом режиме и отправить избыточное действие?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Да, возможно, вы можете выполнить какое-то событие, если RN был убит.теперь вопрос в том, как я в основном использую реагирующую нативу, и у меня тоже есть некоторые проблемы, я также хочу выполнить какое-то событие, если RN был убит, но я не получил никакого ответа, на самом деле моя задача - открыть приложение, котороеможет и показать экран вызова при получении уведомления о вызове, поэтому я много копаю и нашел решение, сначала я создал мостовое соединение между javascript и java, а затем написал услугу wakeful, которая вызывается каждый раз, когда мы получаем уведомление, а затем япозвонить в службу фоновых намерений, и в этой службе я активирую свою активность и устанавливаю флажки, которые помогают мне открывать экран, когда экран заблокирован, в зависимости от условий

// Служба получателя //

public class MessagingService extends WakefulBroadcastReceiver {

private static final String TAG = "FirebaseService";

@Override
public void onReceive(Context context, Intent intent) {
    Log.d(TAG, String.valueOf(!isAppOnForeground(context)));


    if (intent.getExtras() != null) {
        if (!isAppOnForeground((context))) {
            //This get called every time you receive notification
        }
    }
}

private boolean isAppOnForeground(Context context) {
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
    if (appProcesses == null) {
        return false;
    }
    final String packageName = context.getPackageName();
    for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
        if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) {
            return true;
        }
    }
    return false;
}

}

0 голосов
/ 23 октября 2018

Нет события, которое вы можете поймать, прежде чем приложение будет убито.Вы также не можете запретить пользователю убивать ваше приложение.И как только он убит, вы не можете «разбудить» его, так как ваш код не работает.Вы можете выполнять такие задачи, только когда приложение находится в фоновом режиме / на переднем плане.

...