在 react-native 中使用 aws pinpoint 推送通知
Push notification using aws pinpoint in react-native
我正在努力从 AWS Pinpoint 向我的本机反应应用程序发送推送通知。如果我使用 aws amplify CLI 开发一个新的 react-native 应用程序,如 AWS 在线指南中所述,并创建全新的设置,它工作正常。但问题是我已经在我的 react-native 应用程序中使用 Auth 进行了放大设置。现在我需要将 PUSH NOTIFICATION 集成到我现有的 react-native 应用程序中。如何在已配置 AWS AUTH 的现有反应本机应用程序中使用 AWS PINPOINT 添加推送通知。
以下是我尝试过的。
- 创建了 Firebase 项目并在 Android 中添加了所需的 Android 依赖项和配置。
- 保存了 AWS Pinpoint 推送通知所需的 API 服务器密钥。
- 创建了 AWS Pinpoint 项目并在推送通知中添加了 FCM 通道。
- 在我的 react-native 应用程序的 Analytics 配置下添加。
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 CLI 控制台发送通知时,出现错误
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 的新手,有点卡在这里。我已经在这上面花了一整天,但找不到问题所在。有什么我遗漏的吗??
请帮帮我。
谢谢,
穆尼什
当调用 PushNotification onRegister 方法时,我以某种方式没有收到 deviceToken/Endpoint。可能是 Pinpoint 没有填充 firebase endpoint/token 的原因。所以我不得不通过传递令牌手动使用 use updateEndpoint。所以我尝试在我的项目中使用 firebase 并尝试获取令牌。我将其传递给 Analytics updateEndpoint,它对我有用。基本上我没有调用 updateEndpoint,因为我之前没有有效的端点可以传入。
如果有人将来遇到困难,请发布此信息。谢谢
我正在努力从 AWS Pinpoint 向我的本机反应应用程序发送推送通知。如果我使用 aws amplify CLI 开发一个新的 react-native 应用程序,如 AWS 在线指南中所述,并创建全新的设置,它工作正常。但问题是我已经在我的 react-native 应用程序中使用 Auth 进行了放大设置。现在我需要将 PUSH NOTIFICATION 集成到我现有的 react-native 应用程序中。如何在已配置 AWS AUTH 的现有反应本机应用程序中使用 AWS PINPOINT 添加推送通知。
以下是我尝试过的。
- 创建了 Firebase 项目并在 Android 中添加了所需的 Android 依赖项和配置。
- 保存了 AWS Pinpoint 推送通知所需的 API 服务器密钥。
- 创建了 AWS Pinpoint 项目并在推送通知中添加了 FCM 通道。
- 在我的 react-native 应用程序的 Analytics 配置下添加。
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 CLI 控制台发送通知时,出现错误
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 的新手,有点卡在这里。我已经在这上面花了一整天,但找不到问题所在。有什么我遗漏的吗??
请帮帮我。
谢谢, 穆尼什
当调用 PushNotification onRegister 方法时,我以某种方式没有收到 deviceToken/Endpoint。可能是 Pinpoint 没有填充 firebase endpoint/token 的原因。所以我不得不通过传递令牌手动使用 use updateEndpoint。所以我尝试在我的项目中使用 firebase 并尝试获取令牌。我将其传递给 Analytics updateEndpoint,它对我有用。基本上我没有调用 updateEndpoint,因为我之前没有有效的端点可以传入。
如果有人将来遇到困难,请发布此信息。谢谢