Я успешно использую Firebase Cloud Messaging с реагировать-нативный-firebase для отправки и получения сообщений только данных между устройствами Android.
Когда устройство получает сообщение, если приложениев фоновом режиме или был убит, я хотел бы вывести приложение на передний план. Я получаю уведомления, которые будут отображать console.log()
при обоих обстоятельствах, но мне сложно понять, как лучше всего «пробудить» приложение / вывести его на передний план:
firebase.messaging().onMessage((message) => {
// Process your message as required
console.log('You got a message!', message);
});
}
Приведенный выше код выполняется, как и ожидалось, при обоих обстоятельствах.
Существуют ли пакеты React Native, на которые я могу обратить внимание, чтобы помочь достичь того, что я пытаюсь сделать, или я должен подумать о том, чтобы написать несколько Java
?!
Заранее спасибо.
Обновление
Я пытаюсь достичь чего-то вроде this , но не уверен, возможно ли добавить код, подобный этому, прямо вмое приложение React Native?
Обновление 2
Я обнаружил этот пакет Reaction-native-invoke-app , использующий HeadlessJS .
HeadlessJS требует, чтобы вы использовали этот код в вашем index.js
:
AppRegistry.registerHeadlessTask('SomeTaskName', () => require('SomeTaskName'));
Однако Firebase Cloud Messaging
уже требует, чтобы вы предоставили эту строку кода в том же месте, чтоЯ предполагаю, делает то же самое, что и выше:
AppRegistry.registerHeadlessTask('RNFirebaseBackgroundMessage', () => backgroundMessaging);
Следуя документам react-native-invoke-app
, я выполняю вызов для вызова моего приложения в обратном вызове firebase.messaging().onMessage((message))
следующим образом:
firebase.messaging().onMessage((message) => {
// Process your message as required
invokeApp();
console.log('You got message!', message);
});
}
Однакоэто не выводит мое приложение на передний план.
Опять же, любая помощь с этим очень ценится.
Обновление 3
Теперь я переместил вызов invokeApp()
внутри функции Firebase backgroundNotificationListener
, которая является задачей без головы и выглядит как правильный подход:
import invokeApp from 'react-native-invoke-app';
const incomingMessage = async (message) => {
// handle your message
invokeApp();
return Promise.resolve();
}
export default incomingMessage;
Но приложение все равно не выйдет на передний план при вызове функции incomingMessage
.
Обновление 4
Я поднял эту проблему на react-native-invoke-app
GitHub страница, которая содержит более подробную информацию о проблемах, с которыми я сталкиваюсь.