#firebase #react-native #push-notification #firebase-cloud-messaging
# #firebase #react-native #push-уведомление #firebase-cloud-обмен сообщениями
Вопрос:
Я использую firebase / messaging в своем приложении react-native для получения уведомлений только для данных от firebase.
При получении сообщения я обработаю данные, обновлю свое состояние и покажу локальное уведомление с помощью react-native-push-уведомления, если приложение находится в фоновом режиме или завершено.
messaging().setBackgroundMessageHandler(async remoteMessage => {
PushNotification.localNotification({...})
})
На устройстве Android все работает идеально на переднем плане, в фоновом режиме и в завершенном состоянии.
В iOS работает передний план и фон.
Когда приложение завершается, я могу зарегистрировать уведомление в консоли (см. Ниже), И появляется звуковой сигнал уведомления. Но локальное уведомление не отображается.
Когда я пытаюсь войти в систему устройства iOS, консоль выводит следующий вывод
default 03:51:53.697535 0100 dasd Daemon Canceling Activities: {(
com.apple.pushLaunch.de.myapp.app:D1FAA2
)}
default 03:51:53.697770 0100 dasd CANCELED: com.apple.pushLaunch.de.myapp.app:D1FAA2 at priority 10 <private>!
Мое сообщение от сервера:
const message = {
data: {
body: JSON.stringify(msgBody),
title: title,
},
contentAvailable: true,
priority: "high",
android: {
priority: "high",
},
apns: {
headers: {
"apns-priority": "10",
"apns-push-type": "alert", //already tried background too
"apns-topic": "de.myapp.app",
},
payload: { aps: { sound: "default", contentAvailable: true } },
},
tokens: userTokens,
};
Это сводит меня с ума уже несколько дней, и я не могу заставить его работать.
Приветствуется любая помощь
Комментарии:
1. Недавно я столкнулся с этой проблемой в одном из своих приложений и смог ее исправить, используя несколько пакетов (после множества проб и ошибок). Я использовал
"@react-native-community/push-notification-ios": "^1.4.1", "@react-native-firebase/app": "^8.4.3", "@react-native-firebase/messaging": "^7.8.4"
2. Как вы могли бы это исправить? и теперь вы можете разрешать сообщения в завершенном состоянии?
3. В фоновом режиме и отключенном состоянии уведомление обрабатывается iOS. На переднем плане я использовал локальное уведомление.
messaging().onMessage
Выполняется обработчик на переднем плане и в фоновомmessaging().setBackgroundMessageHandler
режиме.4. Формат сообщения,
{"notification": { "body": "", "title": "" },"content_available": true,"data": { ... },"priority": 10}
5. итак, вы отправляете уведомления, верно? потому что мне нужно решение для сообщений только для данных
Ответ №1:
Нашел!
Version 7.18.0 - August 13, 2020 Cloud Messaging
Deprecated setBackgroundMessageHandler. Use the new API onBackgroundMessage instead.
https://firebase.google.com/support/release-notes/js#cloud-messaging_2
Комментарии:
1. Его выдача ошибки undefined не является функцией
2. Я считаю, что это не для react-native. Это для серверной библиотеки.
Ответ №2:
Просматривая их документацию, они упоминают преднамеренные удержания системой при некоторых условиях, не ограничиваясь ими…
- Когда система получает новое фоновое уведомление, она отбрасывает старое уведомление и сохраняет только самое новое.
- Если что-то принудительно завершает работу или завершает работу приложения, система отбрасывает
удерживаемое уведомление. - Если пользователь запускает приложение, система немедленно отправляет
уведомление о задержке.
Комментарии:
1. Но как приложения, такие как Facebook и т. Д., Могут отправлять push-уведомления, Если приложение завершено