【问题标题】:AWSAppSyncClient does not detect graphql queriesAWSAppSyncClient 未检测到 graphql 查询
【发布时间】:2019-05-30 20:55:11
【问题描述】:

我在我的 Android 应用程序中使用 AWS AppSync 并关注 this 链接,但我已经在我的 AppSync 中创建了 API,我希望将其导入到我的 Android 应用程序中。我正在使用 Amplify 链接应用程序。

【问题讨论】:

  • 您是否尝试过使用 ctrl+空格键。
  • 当然!现在,我又犯了一个错误。
  • 您提到您下载了架构。这应该由 Amplify CLI 完成。只是验证您没有手动移动某些东西。
  • @donkon 你是对的。我确实重复了这个过程,它是自动生成的,但现在我面临另一个问题。

标签: android graphql aws-appsync aws-amplify


【解决方案1】:

Ok.So 原来AppSync 中的查询是由不熟悉命名约定的开发人员创建的,他在查询中加上“_”(下划线),当这些查询由Amplify 处理,它只从typemutationquery 名称中删除所有_,而不是从它们内部的方法中删除。例如,

type Query {
  getDaily_Build(id: ID!): Daily_Build
}

在 AppSync 中在 Android 中的 queries.graphql 中生成以下查询

query GetDailyBuild($id: ID!) {
  getDaily_Build(id: $id) {
    id
    username
    title
  }
}

这给出了错误

GraphQL 查询文档验证失败。

我按照命名约定更改了架构,并避免使用“_”之类的特殊字符,现在它可以正常工作了。

【讨论】:

  • 下划线处理至少在 iOS AppSync SDK 中是一个已知问题:github.com/awslabs/aws-mobile-appsync-sdk-ios/issues/137 因为该问题描述了与代码生成端的交互,它也可能影响 Android。
  • 感谢您的意见。在你提到之前,我在 iOS 方面并不知道它,希望这对 iOS 开发人员也有帮助:)
【解决方案2】:

您是否在 gradle 文件中配置了所有必需的插件和库..

apply plugin: 'com.amazonaws.appsync'

implementation 'com.amazonaws:aws-android-sdk-appsync:2.6.+'
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

并且在清单中您需要具有以下权限。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

并且你需要在你的应用标签中有以下服务。

 <service android:name="org.eclipse.paho.android.service.MqttService" />

【讨论】:

  • 是的。我还添加了这些库 implementation('com.amazonaws:aws-android-sdk-mobile-client:2.8.+@aar') { transitive = true} implementation('com.amazonaws:aws-android-sdk-auth-userpools:2.8.+@aar') { transitive = true } implementation('com.amazonaws:aws-android-sdk-auth-ui:2.8.+@aar') { transitive = true }implementation 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.9.2'
猜你喜欢
  • 2016-11-29
  • 2011-10-10
  • 2021-05-12
  • 2021-10-13
  • 1970-01-01
  • 2019-06-27
  • 2019-11-11
  • 1970-01-01
  • 2019-04-06
相关资源
最近更新 更多