title: AWS push notification service integration error
body: <p>I am trying to integrate Amazon Push Notifications to my iPhone app. I did follow the tutorial provided here correctly.</p>
  
  <p>I am getting this error when creating the Platform EndPoint. (Seems a permission issue with identity pool???)</p>
  
  <pre><code>CognitoIdentityCredentials is not authorized to perform: SNS:CreatePlatformEndpoint
  </code></pre>
  
  <p>Full message:</p>
  
  <pre><code>Error: Error Domain=com.amazonaws.AWSSNSErrorDomain Code=4 "The operation couldn’t be completed. (com.amazonaws.AWSSNSErrorDomain error 4.)" UserInfo=0x165dcef0 {Type=Sender, Message=User: arn:aws:sts::290442422498:assumed-role/Cognito_Laugh_DevUnauth_Role/CognitoIdentityCredentials is not authorized to perform: SNS:CreatePlatformEndpoint on resource: arn:aws:sns:us-east-1:290442422498:app/APNS_SANDBOX/Laugh, __text=(
  "\n    ",
  "\n    ",
  "\n    ",
  "\n  "
  ), Code=AuthorizationError}
  </code></pre>
  
  <p>Code</p>
  
  <pre><code>AWSRegionType const CognitoRegionType = AWSRegionUSEast1;
  AWSRegionType const DefaultServiceRegionType = AWSRegionUSEast1;
  NSString *const CognitoIdentityPoolId = @"us-east-1:0..................";
  NSString *const SNSPlatformApplicationArn = @"arn:aws:sns:us-east-1:................";
  NSString *const MobileAnalyticsAppId = @"YourMobileAnalyticsAppId";
  
  
  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
    // Sets up the AWS Mobile SDK for iOS
   AWSCognitoCredentialsProvider *credentialsProvider =   [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoRegionType identityPoolId:CognitoIdentityPoolId];
  
   AWSServiceConfiguration *defaultServiceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:DefaultServiceRegionType
                                                                                     credentialsProvider:credentialsProvider];
  
   AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = defaultServiceConfiguration;
  }
  
  
  - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{
  
  NSString *deviceTokenString = [[[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"&lt;&gt;"]] stringByReplacingOccurrencesOfString:@" " withString:@""];
  
  NSLog(@"deviceTokenString: %@", deviceTokenString);
  [[NSUserDefaults standardUserDefaults] setObject:deviceTokenString forKey:@"deviceToken"];
  [[NSUserDefaults standardUserDefaults] synchronize];
  
  AWSSNS *sns = [AWSSNS defaultSNS];
  AWSSNSCreatePlatformEndpointInput *request = [AWSSNSCreatePlatformEndpointInput new];
  request.token = deviceTokenString;
  request.platformApplicationArn = SNSPlatformApplicationArn;
  
  NSLog(@"SNSPlatformApplicationArn %@", SNSPlatformApplicationArn);
  
  [[sns createPlatformEndpoint:request] continueWithBlock:^id(BFTask *task) {
      if (task.error != nil) {
          NSLog(@"Error: %@",task.error);
      } else {
          AWSSNSCreateEndpointResponse *createEndPointResponse = task.result;
          NSLog(@"endpointArn: %@",createEndPointResponse);
          [[NSUserDefaults standardUserDefaults] setObject:createEndPointResponse.endpointArn forKey:@"endpointArn"];
          [[NSUserDefaults standardUserDefaults] synchronize];
          //[self.window.rootViewController.childViewControllers.firstObject performSelectorOnMainThread:@selector(displayDeviceInfo) withObject:nil waitUntilDone:NO];
  
      }
  
      return nil;
  }];
  </code></pre>
  
  <p>}</p>