设备注册远程通知后(在应用程序中:didRegisterForRemoteNotificationsWithDeviceToken )我是:
我被困在上面列表中的第3步。我无法弄清楚如何获取创建“AWSSNSConfirmSubscriptionInput”对象以传递给“confirmSubscription”所需的令牌。
我应该注意,尽管订阅未得到确认,我仍能从该主题发送APN。这不是iOS(应用程序协议)环境中的必要步骤吗?
以下documentation州:
要实际创建订阅,端点所有者必须使用确认消息中的令牌调用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
}
答案 0 :(得分:1)
Subscribe
将返回SubscriptionArn
(无需端点所有者确认)。对于移动设备,应该是这种情况。
作为旁注,在注册设备时,您应该遵循此blog post中的伪代码。 AWS Mobile Hub可以使用推荐的工作流程生成用于注册设备和订阅主题的参考实现。