Как интегрировать встроенную навигацию React с push-уведомлениями AWS Amplify в Android? - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь получить push-уведомления FCM, работающие в моем собственном реактивном проекте для Android с библиотекой реагировать-нативного уведомления и aws-ampify.У меня проблема с PushNotification.onRegister метод не вызывается в Android для получения токена устройства для отправки удаленных уведомлений. Как я могу заставить эти две библиотеки работать вместе в моем собственном проекте реагировать?

Я следовал документации aws-ampifyhttps://aws -amplify.github.io / docs / js / start? Ref = ampify-rn-btn & platform = Reaction-native для включения библиотеки усиления в собственный проект реагирования.Затем я добавил push-уведомления, настроенные в соответствии с https://aws -amplify.github.io / docs / js / push-notifications Я включил библиотеку реагировать на встроенную навигацию для поддержки навигации в моем приложении реагировать на работув соответствии с https://wix.github.io/react-native-navigation/#/docs/Installing После установки нереализована метод pushNotification.onRegister для встроенной навигационной библиотеки для получения токена устройства, без которого я не могу отправить push-уведомления в android.

У меня есть push-уведомлениянастроенный в App.js, как показано ниже

 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);

Затем в конструкторе App.js я регистрируюсь для событий 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);
    });
  });

Эта настройка работает нормально и PushNotification.onRegisterсобытие вызывается и токен устройства печатается, если я не включаю библиотеку реагировать на встроенную навигацию.В iOS я могу получить токен устройства с библиотекой реагировать на родную навигацию, но в Android он не работает.Будем весьма благодарны за любые указания по этому вопросу!

1 Ответ

0 голосов
/ 22 февраля 2019

См. Здесь: https://github.com/aws-amplify/amplify-js/issues/2541#issuecomment-455245033

  • приложение Android вызывает .onRegister() только один раз, когда приложение / устройство полностью новое.После этого кажется, что вызовы загружаются из кеша.
...