AMAZON AWS如何订阅SNS主题的端点?

cyb*_*6pl 13 push-notification amazon-web-services amazon-sns ios amazon-cognito

我正在使用Amazon SNS和Amazon Cognito服务在iOS应用程序中实现推送通知.Cognito成功保存令牌,我的应用程序得到通知,一切正常,但有一件事.

现在,当仍处于开发阶段时,我需要手动将端点添加到SNS主题,因此所有订阅者都可以收到通知.当我将更新推送到App Store时,将会有数千个令牌添加.

我正在研究亚马逊AWS文档,但不知道是否可以在没有额外努力的情况下实现它.

我的问题:是否可以自动将端点订阅到包含Amazon服务的主题?

Bob*_*ney 23

无法自动将端点订阅到主题,但您可以完成所有代码.

您可以Subscribe在创建端点后直接调用API.与其他类型的订阅不同,SNS Mobile Push无需确认.

下面是一些示例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;
}];
Run Code Online (Sandbox Code Playgroud)

确保您已授予sns:SubscribeCognito角色访问权限,以允许您的应用程序进行此调用.

更新2015-07-08:已更新以反映AWS iOS SDK 2.2.0+