如何从 Amazon SNS 获取订阅 ARN 以取消订阅

How to get Subscription ARN from Amazon SNS in order to unsubscribe from it

我正在使用 Amazon SNS 和 Cognito 订阅和取消订阅某些设备的主题。

*请注意,可能有类似的主题,但亚马逊不再使用该类。

到目前为止,还不错...

但是为了从主题中取消订阅设备,我需要传递我无法在应用程序中弄清楚的订阅 ARN。

订阅 ARN 由主题 ARN(我知道)和亚马逊生成的字母数字字符串(我不知道)组成。

此代码:

AWSSNSUnsubscribeInput *input = [[AWSSNSUnsubscribeInput alloc] init];
input.subscriptionArn = @"arn:aws:sns:XXXXXXXX-YYYYYYYYYYYYYYYYYYYY-ZZZZZZZZZZZZZ";

NSLog(@"Input subscription: %@", input.subscriptionArn);

[sns unsubscribe: input completionHandler:^(NSError * _Nullable error) {
    if (error) {
        NSLog(@"Error occurred: [%ld]", error.code);
    }
    else {
        NSLog(@"Success");
    }
}];

如果我从 AWS 控制台获取订阅 ARN,它工作正常,但在应用程序中我无法查询或生成该字段。

我想有一个绕过的方法,但到目前为止我无法获得任何成功的方法。我应该如何着手完成这项工作?

非常感谢大家。

使用主题 ARN 调用 [sns listSubscriptionsByTopic: input]。响应将包含该主题的所有订阅列表,包括订阅 ARN。您必须在响应中使用 owner 属性 来查找要传递给 unsubscribe.

的特定订阅

我终于得到的东西:

"ListSubscriptions"或"ListSubscriptionsByTopic"API操作应该return订阅ARN:

http://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html http://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptionsByTopic.html