React Native Push Notification на маркере ReReister равен нулю
Я использую библиотеку zo0r реагировать-родной-push-уведомлений.
По какой-то причине, когда я открываю app
впервые после того, как я установил его на мобильном устройстве (iOS
или же Android
) токен возвращается как ноль.
PushNotification.configure({
onRegister: function(token) {
console.log( 'TOKEN:', token );
},
onNotification: function(notification) {
console.log( 'NOTIFICATION:', notification );
},
senderID: "YOUR GCM SENDER ID",
permissions: {
alert: true,
badge: true,
sound: true
},
popInitialNotification: true,
requestPermissions: true,
});
У меня вопрос, каков наилучший подход для получения токена, если метод onRegister возвращает токен как ноль? Должен ли я вызвать эту функцию на другом экране приложения?
"react": "16.0.0-alpha.6",
"react-native": "^0.44.3",
"react-native-push-notification": "^3.0.1"
Спасибо за помощь,
Mikhi
2 ответа
У меня была такая же проблема. Я не знаю почему, но PushNotification.configure не работает на iOS, поэтому вам следует использовать
const fcmToken = await firebase.messaging().getToken();
if (fcmToken) {
// user has a device token
} else {
// user doesn't have a device token yet
}
вместо PushNotification.configure (не забудьте использовать async, если используете await) или другим способом:
firebase.messaging().getToken()
.then(fcmToken => {
if (fcmToken) {
// user has a device token
} else {
// user doesn't have a device token yet
}
});
А для Android метод, который я отправил выше, не работает. Но PushNotification.configure работает. Вы должны использовать PushNotification.configure для получения токенов для Android. Вы должны проверить свой SDK, версии firebase-messaging и обновить свою студию Android, потому что старая версия студии Android не поддерживает новую версию firebase-messaging. После того, как я сделал это, я успешно получил свои токены на Android. Если у вас возникнут проблемы с обновлением этих вещей, я могу выслать вам подробную информацию о версиях и способах их обновления.
Эта проблема была FCM.getAPNSToken()
бежит сразу после FCM.requestPermissions()
, поэтому приложение не получило разрешения для push-уведомлений при запуске метода.
Изменить:
componentDidMount -> async componentDidMount
а также
FCM.requestPermissions(); -> await FCM.requestPermissions();
Это решение https://github.com/evollu/react-native-fcm/issues/528