[英]iOS AWS SNS: How does client confirm SNS Topic subscription?
设备注册了远程通知后(在application:didRegisterForRemoteNotificationsWithDeviceToken中 ),我是:
我停留在上述列表的第3步。 我无法弄清楚如何获取创建“ AWSSNSConfirmSubscriptionInput”对象传递给“ confirmSubscription”所需的令牌。
我应该注意,尽管未确认订阅,但我仍可以从该主题发送APN。 在iOS(应用协议)的上下文中这不是必需的步骤吗?
该文档指出以下内容:
要实际创建订阅,端点所有者必须使用来自确认消息的令牌来调用ConfirmSubscription操作。 确认令牌有效期为三天。
我不知道如何获取执行“ ConfirmSubscription”操作所需的“令牌”。 “订阅”操作结果的类型为“ AWSSNSSubscribeResponse”,它只有一个属性“ subscriptionArn”,并且似乎不包含包含令牌的“确认消息”。 那么如何获得此令牌?
这是我的应用程序的主体:didRegisterForRemoteNotificationsWithDeviceToken委托方法:
sns.createPlatformEndpoint(createPlatformEndPointInput).continueWithBlock { (task:AWSTask!) in
if let error = task.error{
XCGLogger.defaultInstance().error("Platform endpoint creation error: \(error)")
return nil
}
let result = task.result as! AWSSNSCreateEndpointResponse
let subscribeInput = AWSSNSSubscribeInput()
subscribeInput.topicArn = "arn:aws:sns:us-west-2:xxx:topicname"
subscribeInput.endpoint = result.endpointArn
subscribeInput.protocols = "application"
sns.subscribe(subscribeInput).continueWithBlock({ (task:AWSTask!) in
if let subError = task.error{
XCGLogger.defaultInstance().error("Topic Subscription Error: \(subError)")
return nil
}
let subscribeResult = task.result as! AWSSNSSubscribeResponse
XCGLogger.defaultInstance().debug("Subscription result: \(subscribeResult)")
let subscriptionConfirmInput = AWSSNSConfirmSubscriptionInput()
subscriptionConfirmInput.token = ?? //How do I get this??
subscriptionConfirmInput.topicArn = "arn:aws:sns:xxx:myTopic"
sns.confirmSubscription(subscriptionConfirmInput).continueWithBlock({ (task:AWSTask!) in
if let error = task.error{
XCGLogger.defaultInstance().error("Subscription Confirmation Error: \(error)")
}
return nil
})
return nil
})
return nil
}
如果服务能够立即创建订阅(不需要端点所有者确认),则Subscribe
返回SubscriptionArn
。 对于移动设备,情况应该如此。
另外,注册设备时,请遵循此博客文章中的伪代码。 AWS Mobile Hub还可生成参考实施,以使用推荐的工作流程注册设备并订阅主题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.