所以我对Android开发和AWS都很陌生。我在业余时间做了一个项目,过去一个月一直在处理一个问题,现在真的很适合我。
该应用程序的主要焦点是它在后台进行一些检查,然后将数据提交给AWS DynamoDB。
我开始在我的应用程序中定期使用Alarm Manager,然后将数据推送到DynamoDB。这种方式非常好,直到应用程序被强制关闭,然后当闹钟在时间X关闭时,它给出了以下异常: com.amazonaws.services.cognitoidentity.model.NotAuthorizedException:此身份池不支持未经身份验证的访问。
然后我尝试设置SyncAdapter。无论如何,我都要通过Android帐户身份验证进行身份验证,并通过ContentProvider访问DynamoDB。现在我只是设置我的SyncAdapter。同样,如果应用程序正在运行或在后台运行同步,则数据会发送到Dynamo。如果我强制关闭应用程序然后同步执行它会给我这些错误:
同步启动时出现此错误 -
E / CognitoCachingCredentialsProvider:无法获取凭据 com.amazonaws.services.cognitoidentity.model.NotAuthorizedException:访问Identity' eu-west-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'禁止。 (服务:AmazonCognitoIdentity;状态代码:400;错误代码:NotAuthorizedException;请求ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
当我尝试插入Dynamo时,接下来是这样的 - com.amazonaws.services.cognitoidentity.model.NotAuthorizedException:此标识池不支持未经身份验证的访问。 (服务:AmazonCognitoIdentity;状态代码:400;错误代码:NotAuthorizedException;请求ID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
现在,通过阅读一些内容,SyncAdapter实际上就是我应该使用的东西。所以我想继续使用SyncAdapter,我只是举了一个Alarm Manager的例子,以防有人向我推荐。
我已经尝试过大量的东西而且没有任何工作......看起来似乎SyncAdapter无法重新验证。
我使用了以下主要来源: 1:https://docs.aws.amazon.com/aws-mobile/latest/developerguide/tutorial-android-aws-mobile-notes-data.html 2:https://aws.amazon.com/blogs/mobile/integrating-amazon-cognito-with-the-android-accountmanager-api/
另外还有很多其他人,因为上面的一些文档已经过时了。