Как отправлять push-уведомления с одного устройства на другое с помощью React Native, используя Expo и Firebase? ⇐ Android
Как отправлять push-уведомления с одного устройства на другое с помощью React Native, используя Expo и Firebase?
Я хочу, чтобы мое приложение для Android отправляло push-уведомления с одного устройства на другое. Я подключил проект к Firebase и могу отправить себе push-уведомление с помощью инструмента push-уведомлений Expo. Я не понимаю, как использовать Firebase для передачи сообщения с одного устройства на другое. Я прочитал документацию выставки, но не понимаю, каким должен быть мой следующий шаг. Любая помощь будет оценена по достоинству. Вот мой код.
import { useState, useEffect, useRef } из «реагировать»; импортировать {Текст, Представление, Кнопка, Платформа} из «реагировать-родного»; импортировать * как устройство из «expo-device»; импортировать * как уведомления из «экспо-уведомлений»; импортировать константы из «экспо-констант»; Notifications.setNotificationHandler({ handleNotification: async () => ({ mustShowAlert: правда, долженPlaySound: ложь, долженSetBadge: ложь, }), }); // Можно использовать эту функцию ниже или использовать инструмент push-уведомлений Expo по адресу: https://expo.dev/notifications асинхронная функция sendPushNotification(expoPushToken) { константное сообщение = { куда: expoPushToken, звук: «по умолчанию», title: 'Оригинальное название', body: 'А вот и тело!', // данные: { someData: 'идет сюда' }, }; await fetch('https://exp.host/--/api/v2/push/send', { метод: 'POST', заголовки: { Примите: «приложение/json», «Принять-кодирование»: «gzip, выкачать», «Тип контента»: «приложение/json», }, тело: JSON.stringify(сообщение), }); } асинхронная функция RegisterForPushNotificationsAsync() { пусть токен; если (Device.isDevice) { const {статус: существующийстатус} = ждут Notifications.getPermissionsAsync(); пусть FinalStatus = существующий статус; if (existingStatus !== 'предоставлено') { const {статус} = ждут Notifications.requestPermissionsAsync(); FinalStatus = статус; } if (finalStatus !== 'предоставлено') { alert('Не удалось получить токен для push-уведомлений!'); возвращаться; } токен = ждут Notifications.getExpoPushTokenAsync({ идентификатор проекта: Constants.expoConfig.extra.eas.projectId, }); console.log(токен); } еще { alert('Для push-уведомлений необходимо использовать физическое устройство'); } if (Platform.OS === 'android') { Notifications.setNotificationChannelAsync('default', { имя: «по умолчанию», важность: Notifications.AndroidImportance.MAX, шаблон вибрации: [0, 250, 250, 250], Цвет света: '#FF231F7C', }); } вернуть токен; } экспортировать функцию по умолчанию App() { const [expoPushToken, setExpoPushToken] = useState(''); const [уведомление, setNotification] = useState(false); const NotificationListener = useRef(); const responseListener = useRef(); useEffect(() => { RegisterForPushNotificationsAsync().then(токен => setExpoPushToken(токен)); NotificationListener.current = Notifications.addNotificationReceivedListener(notification => { setNotification (уведомление); }); responseListener.current = Notifications.addNotificationResponseReceivedListener(response => { console.log(ответ); }); возврат () => { Notifications.removeNotificationSubscription(notificationListener.current); Notifications.removeNotificationSubscription(responseListener.current); }; }, []); возвращаться ( {/* Ваш токен выставки: {expoPushToken */} {notification && Notification.request.content.title} {notification && Notification.request.content.body {/* Данные: {notification && JSON.stringify(notification.request.content.data)} */} { дождитесь sendPushNotification (expoPushToken); }} /> ); }
Я хочу, чтобы мое приложение для Android отправляло push-уведомления с одного устройства на другое. Я подключил проект к Firebase и могу отправить себе push-уведомление с помощью инструмента push-уведомлений Expo. Я не понимаю, как использовать Firebase для передачи сообщения с одного устройства на другое. Я прочитал документацию выставки, но не понимаю, каким должен быть мой следующий шаг. Любая помощь будет оценена по достоинству. Вот мой код.
import { useState, useEffect, useRef } из «реагировать»; импортировать {Текст, Представление, Кнопка, Платформа} из «реагировать-родного»; импортировать * как устройство из «expo-device»; импортировать * как уведомления из «экспо-уведомлений»; импортировать константы из «экспо-констант»; Notifications.setNotificationHandler({ handleNotification: async () => ({ mustShowAlert: правда, долженPlaySound: ложь, долженSetBadge: ложь, }), }); // Можно использовать эту функцию ниже или использовать инструмент push-уведомлений Expo по адресу: https://expo.dev/notifications асинхронная функция sendPushNotification(expoPushToken) { константное сообщение = { куда: expoPushToken, звук: «по умолчанию», title: 'Оригинальное название', body: 'А вот и тело!', // данные: { someData: 'идет сюда' }, }; await fetch('https://exp.host/--/api/v2/push/send', { метод: 'POST', заголовки: { Примите: «приложение/json», «Принять-кодирование»: «gzip, выкачать», «Тип контента»: «приложение/json», }, тело: JSON.stringify(сообщение), }); } асинхронная функция RegisterForPushNotificationsAsync() { пусть токен; если (Device.isDevice) { const {статус: существующийстатус} = ждут Notifications.getPermissionsAsync(); пусть FinalStatus = существующий статус; if (existingStatus !== 'предоставлено') { const {статус} = ждут Notifications.requestPermissionsAsync(); FinalStatus = статус; } if (finalStatus !== 'предоставлено') { alert('Не удалось получить токен для push-уведомлений!'); возвращаться; } токен = ждут Notifications.getExpoPushTokenAsync({ идентификатор проекта: Constants.expoConfig.extra.eas.projectId, }); console.log(токен); } еще { alert('Для push-уведомлений необходимо использовать физическое устройство'); } if (Platform.OS === 'android') { Notifications.setNotificationChannelAsync('default', { имя: «по умолчанию», важность: Notifications.AndroidImportance.MAX, шаблон вибрации: [0, 250, 250, 250], Цвет света: '#FF231F7C', }); } вернуть токен; } экспортировать функцию по умолчанию App() { const [expoPushToken, setExpoPushToken] = useState(''); const [уведомление, setNotification] = useState(false); const NotificationListener = useRef(); const responseListener = useRef(); useEffect(() => { RegisterForPushNotificationsAsync().then(токен => setExpoPushToken(токен)); NotificationListener.current = Notifications.addNotificationReceivedListener(notification => { setNotification (уведомление); }); responseListener.current = Notifications.addNotificationResponseReceivedListener(response => { console.log(ответ); }); возврат () => { Notifications.removeNotificationSubscription(notificationListener.current); Notifications.removeNotificationSubscription(responseListener.current); }; }, []); возвращаться ( {/* Ваш токен выставки: {expoPushToken */} {notification && Notification.request.content.title} {notification && Notification.request.content.body {/* Данные: {notification && JSON.stringify(notification.request.content.data)} */} { дождитесь sendPushNotification (expoPushToken); }} /> ); }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение