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

Другие вопросы по тегам