Search code examples
androidamazon-web-servicesreact-nativeaws-amplifyaws-pinpoint

Send push notifications via AWS Pinpoint to specified User


I am using react-native and amplify to send push notifications to devices via AWS Pinpoint. I can get the generated token for the devices. But I just need to send push notifications using user Id. I try to update the endpoint, but it's not working. Can anyone suggest me the proper way to handle this?

PushNotification.onRegister((token) => {
  console.log('in app registration', token);
  Analytics.updateEndpoint({
    address: token,
    channelType: "GCM",
    OptOut: 'NONE',
    userId: "12345"
  }).then(data => {
    console.log(data)
  }).catch(error => {
    console.log(error)
  });
});

Solution

  • I was able to do that using @aws-amplify/analytics library. Following is the method that I used.

    Analytics.configure(aws_exports);
    
    PushNotification.onRegister((token) => {
            //alert(token) 
            console.log('in app registration', token);
            Analytics.updateEndpoint({
                address: token, // The unique identifier for the recipient. For example, an address could be a device token, email address, or mobile phone number.
                attributes: {
                  // Custom attributes that your app reports to Amazon Pinpoint. You can use these attributes as selection criteria when you create a segment.
                  hobbies: ['piano', 'hiking'],
                  interests: ['basketball']
                },
                channelType: 'GCM', // The channel type. Valid values: APNS, GCM
                userId: '221XWsdfER234',
                // User attributes
                optOut: 'ALL',
                userAttributes: {
                    interests: ['football', 'basketball', 'AWS']
                    // ...
                }
            }).then((data) => {
                console.log(data)
            }).catch(error => {
                console.log(error)
            })
    
        });