ios - AMAZON AWS 如何为端点订阅 SNS 主题?

标签 ios amazon-web-services push-notification amazon-sns amazon-cognito

我正在使用 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/

相关文章:

iOS:设置 httpBody 属性时 HTTP POST 请求超时

cocoa-touch - 如何在 iOS 中使用 bzip2 格式? Apple 告诉我 bzBuffToBuffDecompress 是私有(private) API

amazon-web-services - Freenom.com 和 AWS Amplify : Amazon asks me to 'configure root domain' (@ ANAME abc-whatever-xyz. cloudfront.net) -> Freenom:不允许使用通配符

ios - 如果用户没有打开通知,如何获取 AppDelegate' didFinishLunchingWithOptions 处的通知 extradata(payloadData)

ios - Xamarin 表格 : Have I Covered the bases on iOS Push Notifications?

ios - 在 block 中创建对象

ios - 核心图形和渐变

javascript - 无服务器 AWS 中映射条目的错误缩进

python-3.x - 使用 livy 向 AWS EMR 提交具有虚拟环境的 pyspark 作业

firebase - cordova-plugin-fcm 使用 ios 真实设备( ionic )在 token 中给出 null