我正在使用 Amazon SNS 和 Amazon Cognito 服务在 iOS 应用程序中实现推送通知。 Cognito 成功保存 token ,我的应用程序收到通知,一切正常,但有问题。
现在,在开发过程中,我需要手动将端点添加到 SNS 主题,以便所有订阅者都能收到通知。当我将更新推送到 App Store 时,将添加数千个 token 。
我正在研究 Amazon AWS 文档,但不知道是否可以在不付出额外努力的情况下实现它。
我的问题:是否可以自动通过亚马逊服务自动订阅一个主题?
最佳答案
无法自动为端点订阅主题,但您可以通过代码完成所有操作。
您可以在创建端点后直接调用 Subscribe
API。与其他类型的订阅不同,SNS 移动推送无需确认。
下面是一些示例 Objective-C 代码,它创建了一个端点并将其订阅到一个主题:
AWSSNS *sns = [AWSSNS defaultSNS];
AWSSNSCreatePlatformEndpointInput *endpointRequest = [AWSSNSCreatePlatformEndpointInput new];
endpointRequest.platformApplicationArn = MY_PLATFORM_ARN;
endpointRequest.token = MY_TOKEN;
[[[sns createPlatformEndpoint:endpointRequest] continueWithSuccessBlock:^id(AWSTask *task) {
AWSSNSCreateEndpointResponse *response = task.result;
AWSSNSSubscribeInput *subscribeRequest = [AWSSNSSubscribeInput new];
subscribeRequest.endpoint = response.endpointArn;
subscribeRequest.protocols = @"application";
subscribeRequest.topicArn = MY_TOPIC_ARN;
return [sns subscribe:subscribeRequest];
}] continueWithBlock:^id(BFTask *task) {
if (task.cancelled) {
NSLog(@"Task cancelled");
}
else if (task.error) {
NSLog(@"Error occurred: [%@]", task.error);
}
else {
NSLog(@"Success");
}
return nil;
}];
确保您已在 Cognito 角色中授予对 sns:Subscribe
的访问权限,以允许您的应用程序进行此调用。
2015-07-08 更新:已更新以反射(reflect) AWS iOS SDK 2.2.0+
关于ios - AMAZON AWS 如何为端点订阅 SNS 主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974852/