Фоновая выборка при завершении работы приложения react-родной Android

#android #react-native #fetch-api #terminate #background-fetch

#Android #react-native #выборка-api #завершить #фоновая выборка

Вопрос:

Я уже довольно долго искал в Интернете, и я нигде не мог найти надлежащую документацию для реализации фоновой выборки при завершении работы приложения (не в фоновом режиме).

Я следил за документацией и реализовал ее следующим образом:

  useEffect(() => {
    BackgroundFetch.configure(
      {
        forceAlarmManager: true,
        enableHeadless: true,
        stopOnTerminate: false,
        requiredNetworkType: BackgroundFetch.NETWORK_TYPE_ANY,
        startOnBoot: true,
      },
      async (taskId) => {
        console.log('[BackgroundFetch] taskId: ', taskId);

        PushNotification.localNotificationSchedule({
          bigText:
            'We will be watering your Plants in few minutes. Please check if your schedule is updated in Device',
          subText: 'Background task',
          title: 'Watering Plants',
          color: '#60ad5e',
          message: 'Expand to show more',
          actions: ['Okay'],
          group: 'group',
          date: new Date(Date.now()   5 * 1000), //Change this to (scheduled time - some minutes) as to notify the user earlier.
        });

        BackgroundFetch.finish(taskId);
      },
    );
   
  }, []);


// And with with #scheduleTask
  BackgroundFetch.scheduleTask({
    taskId: 'com.foo.customtask',
    delay: 15000, // milliseconds
    forceAlarmManager: true,
    periodic: false,
  });
  

итак, здесь в основном я хочу запустить выборку API и показать пользователю push-уведомление. Таким образом, есть вероятность, что пользователь удалит приложение из фонового режима (т.е. ЗАВЕРШИТ РАБОТУ).
Поэтому я хочу показать это Push-уведомление, даже когда приложение завершено в ANDROID.

Может кто-нибудь сказать мне, что я здесь делаю не так?

Ответ №1:

Для Android вы должны использовать firebase для отправки push-уведомлений. Я настоятельно рекомендую приложение @react-native-firebase и их документацию.

По сути, ПОСЛЕ ТОГО, КАК ВЫ ВЫПОЛНИЛИ УСТАНОВКИ, код просто

 import messaging from '@react-native-firebase/messaging';                                            
                                                                                                 
// Register background handler                                                                       
messaging().setBackgroundMessageHandler(async remoteMessage => {                                     
  console.log('Message handled in the background!', remoteMessage);                                  
});                                                                                                  
                                                                                                 
AppRegistry.registerComponent(appName, () => App);
  

В index.js

Смотрите Их документацию для приложения firebase https://rnfirebase.io /

И часть обмена сообщениями https://rnfirebase.io/messaging/usage

Комментарии:

1. Спасибо, я проверю это!

2. Принимаю этот ответ, потому что единственный способ добиться этого — использовать удаленное Push-уведомление.