如何使用Android SDK为Amazon推送SNS设置应用程序ARN

如何使用Android SDK为Amazon推送SNS设置应用程序ARN,android,amazon-sns,Android,Amazon Sns,我正在尝试注册我的Android设备以接收推送通知,但是amazon服务器返回一个错误,说它找不到我的PlatformApplicationArn。我正在使用他们的sdk进行设置,但似乎找不到它 这就是错误: AWS错误消息:无效参数:PlatformApplication错误原因:所需参数没有值 这是发送它的代码: String platformApplicationArn = "arn:aws:sns:us-east-1:897955111111:app/GCM/com.myapp"; AW

我正在尝试注册我的Android设备以接收推送通知,但是amazon服务器返回一个错误,说它找不到我的PlatformApplicationArn。我正在使用他们的sdk进行设置,但似乎找不到它

这就是错误: AWS错误消息:无效参数:PlatformApplication错误原因:所需参数没有值

这是发送它的代码:

String platformApplicationArn = "arn:aws:sns:us-east-1:897955111111:app/GCM/com.myapp";
AWSCredentials awsCredentials = new BasicAWSCredentials("XXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX");
pushClient = new AmazonSNSClient(awsCredentials);
CreatePlatformEndpointRequest createPlatformEndpointRequest = new CreatePlatformEndpointRequest();
String customPushData = "my custom data";
CreatePlatformEndpointRequest platformEndpointRequest = new CreatePlatformEndpointRequest();
platformEndpointRequest.setCustomUserData(customPushData);
platformEndpointRequest.setToken(pushNotificationRegId);
platformEndpointRequest.setPlatformApplicationArn(platformApplicationArn);
CreatePlatformEndpointResult result = pushClient.createPlatformEndpoint(createPlatformEndpointRequest);

您有两个实例
CreatePlatformEndpointRequest
,您在其中一个实例上设置了令牌和applicationArn,但在SNSClient请求中使用了另一个实例,因此它缺少必需的参数

String platformApplicationArn = "arn:aws:sns:us-east-1:897955111111:app/GCM/com.myapp";
AWSCredentials awsCredentials = new BasicAWSCredentials("XXXXXXXX", "XXXXXXXXXXXXXXXXXXXXX");
AmazonSNSClient pushClient = new AmazonSNSClient(awsCredentials);
//probably no need for this
String customPushData = "my custom data";

CreatePlatformEndpointRequest platformEndpointRequest = new CreatePlatformEndpointRequest();

platformEndpointRequest.setCustomUserData(customPushData);
platformEndpointRequest.setToken(pushNotificationRegId);
platformEndpointRequest.setPlatformApplicationArn(platformApplicationArn);

CreatePlatformEndpointResult result = pushClient.createPlatformEndpoint(platformEndpointRequest);
另外,除非您的SNS应用程序区域是US_EAST_1,否则我发现您必须手动设置区域,否则您将收到不匹配的区域错误响应,因此在调用
createPlatformEndpoint()
之前,请按如下方式设置您的区域:

//Replace with whatever region your app is
pushClient.setRegion(Region.getRegion(Regions.US_WEST_2));

刚刚遇到这个问题--SDK没有使用记录在案的区域确定方法@。我创建了。897955111111这个值来自哪里?这是你的gcm项目id吗?