3 votes

Comment intégrer la navigation native React avec les notifications push AWS Amplify dans Android ?

J'essaie de faire fonctionner les notifications push de la FCM dans mon projet react native pour Android avec la bibliothèque react-native-notification et aws-amplify. J'ai un problème avec la méthode PushNotification.onRegister qui n'est pas appelée dans Android pour obtenir le jeton de l'appareil afin d'envoyer des notifications à distance.

J'ai suivi la documentation de aws-amplify https://aws-amplify.github.io/docs/js/start?ref=amplify-rn-btn&platform=react-native pour inclure la bibliothèque amplifiée dans le projet react native. J'ai ensuite ajouté des notifications push configurées comme suit https://aws-amplify.github.io/docs/js/push-notifications J'ai inclus la bibliothèque react-native-navigation pour prendre en charge la navigation dans mon application react-native, comme indiqué ci-dessous. https://wix.github.io/react-native-navigation/#/docs/Installing Après l'installation de la bibliothèque de navigation react-native, la méthode pushNotification.onRegister n'est pas appelée pour recevoir le jeton de l'appareil, sans quoi je suis incapable d'envoyer des notifications push sous Android.

J'ai des notifications push configurées dans App.js comme ci-dessous

 import PushNotification from '@aws-amplify/pushnotification';
 import Analytics from '@aws-amplify/analytics';
 import Auth from '@aws-amplify/auth';
 // retrieve temporary AWS credentials and sign requests
 Auth.configure(awsconfig);
// send analytics events to Amazon Pinpoint
Analytics.configure(awsconfig);
console.log(PushNotification);
PushNotification.configure(awsconfig);

Ensuite, dans le constructeur de App.js, je m'inscris pour les événements de PushNotification.

 Navigation.events().registerAppLaunchedListener(() => {
    PushNotification.onNotification((notification) => {
      // Note that the notification object structure is different    from Android and IOS
      console.log('in app notification', notification);

      // required on iOS only (see fetchCompletionHandler docs: https://facebook.github.io/react-native/docs/pushnotificationios.html)
      notification.finish(PushNotificationIOS.FetchResult.NoData);
    });

    // get the registration token
    PushNotification.onRegister((token) => {
      Alert.alert(token);
   this.setState({token:token});
      console.log('in app registration', token);
    });

    // get the notification data when notification is opened
    PushNotification.onNotificationOpened((notification) => {
        console.log('the notification is opened', notification);
    });
  });

Cette configuration fonctionne bien et l'événement PushNotification.onRegister est appelé et le jeton du dispositif est imprimé si je n'inclus pas la bibliothèque react-native-navigation. Dans iOS, je suis en mesure d'obtenir le jeton du dispositif avec la bibliothèque react-native-navigation, mais dans Android, cela ne fonctionne pas. Toute indication sur ce problème serait grandement appréciée !

0voto

MattDameon Points 21

Voir ici : https://github.com/aws-amplify/amplify-js/issues/2541#issuecomment-455245033

  • l'application Android appelle .onRegister() une seule fois, lorsque l'application/appareil est entièrement nouveau. Les appels qui suivent semblent se charger à partir du cache.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X