Я создаю собственное приложение React, основанное на Expo , и хочу также воспользоваться возможностями push-уведомлений Expo в сочетании с База данных Firebase в реальном времени . Я в основном следую описанным шагам здесь . Все шло довольно хорошо, прежде чем дойти до места, где должен быть извлечен токен push-уведомления.
registerForPushNotificationsAsync = async (userInfo) => {
// ... Stuff
// Get the token that uniquely identifies this device
let token = await Notifications.getExpoPushTokenAsync();
console.log("Expo token: " + token);
var updates = {}
updates['/expoToken'] = token
firebase.database().ref('Users').child(userInfo.user.uid).update(updates)
}
Проблема возникает в этой строке:
let token = await Notifications.getExpoPushTokenAsync();
Он никогда не возвращает значение, и я не могу получить push-токен. Это специфично для Android (Android 7.0) и не встречается на iPhone (iOS 11.0.2). На iPhone возвращается токен, и я успешно сохраняю его в базе данных.
Что я делаю, так это запускаю выставку, используя их CLI, и сканирую сгенерированный QR-код (используя их клиентские приложения для IOS / Android). Затем снова в загруженном браузере CLI я наблюдаю, что происходит во время выполнения с приложением соответственно на iPhone и на телефоне Android. Версии пакетов следующие:
expo@31.0.2
firebase@5.5.7
react-native@0.57.1
Я хочу запустить это на Android, но все еще безуспешно. Я видел в i-net, что некоторые люди просто используют FCM для push-уведомлений , но все еще не уверены. Я так понимаю:
Обратите внимание, что FCM нельзя использовать для отправки сообщений на Android Expo
Клиент. Кроме того, FCM в настоящее время недоступен для приложений Expo iOS.
означает, что при использовании FCM пуш-уведомления никогда не будут работать как для IOS, так и для Android.
РЕДАКТИРОВАТЬ : После обновления клиентского приложения для Android теперь появляется сообщение:
[Ошибка: не удалось получить токен GCM для устройства]