· 8 years ago · Dec 20, 2017, 09:46 PM
1private func subscribe(_ token : String, _ completionHandler : ((Error?) -> ())? = nil) {
2
3let credentialsProvider : AWSStaticCredentialsProvider = AWSStaticCredentialsProvider(accessKey: Constants.AWSAccessKey, secretKey: Constants.AWSSecretKey)
4let defaultServiceConfiguration : AWSServiceConfiguration = AWSServiceConfiguration(region: Constants.AWSRegion, credentialsProvider: credentialsProvider)
5AWSServiceManager.default().defaultServiceConfiguration = defaultServiceConfiguration
6
7let sns = AWSSNS.default()
8let createPlatformEndpointInput = AWSSNSCreatePlatformEndpointInput()
9createPlatformEndpointInput?.token = token
10createPlatformEndpointInput?.platformApplicationArn = Constants.SNSPlatformApplicationArn
11
12sns.createPlatformEndpoint(createPlatformEndpointInput!).continueWith { (task) -> AnyObject! in
13
14 if task.error != nil {
15 print("Error creating platform endpoint: (task.error)")
16 completionHandler?(task.error)
17 return nil
18 }
19 let result = task.result as! AWSSNSCreateEndpointResponse
20 let subscribeInput = AWSSNSSubscribeInput()
21 subscribeInput?.topicArn = Constants.SNSTopicARN
22 subscribeInput?.endpoint = result.endpointArn
23 print("Enfdpoint created")
24 print("Endpoint arn: (result.endpointArn!)")
25 subscribeInput?.protocols = "application"
26 sns.subscribe(subscribeInput!).continueWith { (task) -> AnyObject! in
27
28 if task.error != nil {
29 completionHandler?(task.error)
30 print("Error subscribing: (task.error)")
31 return nil
32 }
33 print("Subscribed succesfully")
34 print("Subscription arn: (task.result?.subscriptionArn!)")
35 let subscriptionConfirmInput = AWSSNSConfirmSubscriptionInput()
36 subscriptionConfirmInput?.token = token
37 subscriptionConfirmInput?.topicArn = Constants.SNSTopicARN
38 sns.confirmSubscription(subscriptionConfirmInput!).continueWith { (task) -> AnyObject! in
39
40 if task.error != nil {
41 print("Confirmed subscription")
42 }
43 completionHandler?(task.error)
44 return nil
45 }
46 return nil
47 }
48 return nil
49}}