#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-уведомление.