proyecto paso crear como aws ios objective-c amazon-web-services amazon-sns aws-sdk

ios - paso - firebase in aws



Error de integración del servicio de notificación de inserción de AWS (2)

El problema estaba en las configuraciones AWS SNS. Necesitamos agregar "SNS: CreatePlatformEndpoint" a la política para los roles Auth y Unuth

Estoy tratando de integrar notificaciones de Amazon Push a mi aplicación de iPhone. Seguí el tutorial proporcionado aquí correctamente.

Recibo este error al crear la plataforma EndPoint. (Parece un problema de permiso con el grupo de identidades ???)

CognitoIdentityCredentials is not authorized to perform: SNS:CreatePlatformEndpoint

Mensaje completo:

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}

Código

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:@"<>"]] 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; }];

}


Puede agregar AmazonSNSFullAccess en Roles -> attach policy .