Push-уведомление с использованием aws pinpoint в react-native

#amazon-web-services #react-native #firebase-cloud-messaging #aws-cli #aws-pinpoint

#amazon-веб-сервисы #react-native #firebase-облако-обмен сообщениями #aws-cli #aws-pinpoint

Вопрос:

Я работаю над отправкой PUSH-УВЕДОМЛЕНИЙ из AWS Pinpoint в мое приложение react-native. Если я разработаю новое приложение на основе react-native, как указано в онлайн-руководстве AWS, с помощью aws amplify CLI и создам совершенно новую настройку, оно будет работать нормально. Но проблема в том, что у меня уже есть настройка amplify с авторизацией в моем приложении react-native. Теперь мне нужно интегрировать PUSH-УВЕДОМЛЕНИЕ в мое существующее приложение react-native. Как я могу добавить PUSH-УВЕДОМЛЕНИЕ с помощью AWS PINPOINT в мое существующее приложение react-native, в котором уже настроен AWS AUTH.

Ниже приведены вещи, которые я пробовал.

  1. Создал проект Firebase и добавил необходимые зависимости и конфигурацию Android в Android.
  2. Сохранен ключ сервера API, который необходим для AWS Pinpoint push notification.
  3. Создал проект AWS Pinpoint и добавил канал FCM в Push-уведомление.
  4. Добавлена приведенная ниже конфигурация аналитики в моем приложении react-native.

Конфигурация в react-native:

 Amplify.configure({
  Auth: {
      // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID
      identityPoolId: 'ap-XXXXXX',

      // REQUIRED - Amazon Cognito Region
      region: 'ap-XXXXX',

      // OPTIONAL - Amazon Cognito Federated Identity Pool Region 
      // Required only if it's different from Amazon Cognito Region
      identityPoolRegion: 'ap-XXXX',

      // OPTIONAL - Amazon Cognito User Pool ID
      userPoolId: 'ap-XXXXX',

      // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)
      userPoolWebClientId: 'XXXXXXX',
  },
  Analytics: {
    AWSPinpoint: {
        // OPTIONAL -  Amazon Pinpoint App Client ID
        appId: 'XXXXX',
        // OPTIONAL -  Amazon service region
        region: 'us-west-2',
        // OPTIONAL -  Customized endpoint
        //endpointId: 'XXXXXXXXXXXX',
        // OPTIONAL - Default Endpoint Information
        endpoint: {
           // address: 'xxxxxxx', // The unique identifier for the recipient. For example, an address could be a device token, email address, or mobile phone number.
            attributes: {
                hobbies: ['piano', 'hiking'],
            },
            channelType: 'GCM', // The channel type. Valid values: APNS, GCM
            // Customized userId
            //userId: 'XXXXXXXXXXXX',
            // User attributes
            //userAttributes: {
              //  interests: ['football', 'basketball', 'AWS']
                // ...
            //}
        },
    }
  },
});

PushNotification.onNotification((notification) => {
  console.log('in app notification', notification);
});

// get the registration token
// This will only be triggered when the token is generated or updated.
PushNotification.onRegister((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);
});

Analytics.getPluggable('AWSPinpoint')._config.endpointId;
//above give me the endpoint.

 

Мое приложение работает нормально. Но когда я пытаюсь отправить уведомление из консоли командной строки AWS, я получаю сообщение об ошибке

 AWS cli:
> aws pinpoint send-messages --cli-input-json file://test.json
An error occurred (NotFoundException) when calling the GetEndpoint operation: Resource not found

test.json:
{
  "ApplicationId": "pinpoint_app_client-id",
  "MessageRequest": {
    "Endpoints": {
      "endpoint_got_above": {}
    },
    "MessageConfiguration": {
      "DefaultPushNotificationMessage": {
        "Body": "Test Body",
        "Title": "Test Title"
      }
    }
  }
}

 

Я новичок в AWS и вроде как застрял здесь. Я уже потратил на это целый день, но не смог найти, в чем проблема. Есть ли что-то, чего мне не хватает??

Пожалуйста, помогите мне.

Спасибо, Муниш

Комментарии:

1. Я заставил это работать. Спасибо.

Ответ №1:

Почему-то я не получаю deviceToken / Endpoint при вызове метода PushNotification onRegister. Может быть причиной, по которой Pinpoint не заполняется конечной точкой / токеном firebase. Поэтому мне пришлось использовать use updateEndpoint вручную, передав токен. итак, я попытался использовать firebase в своем проекте и попытался получить токен. я передал то же самое в Analytics updateEndpoint, и это сработало для меня. По сути, я не вызывал updateEndpoint, поскольку у меня не было действительной конечной точки для передачи ранее.

Опубликуйте это, если кто-то застрянет в будущем. Спасибо