AWSAppSyncClient 未检测到 graphql 查询

Posted

技术标签:

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

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

【问题讨论】:

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

以上是关于AWSAppSyncClient 未检测到 graphql 查询的主要内容,如果未能解决你的问题,请参考以下文章

设置 AWSAppSyncClient、Apollo 和 React 的正确方法

Sentry 的 Gradle 任务未编译

未检测到 UIToolBar 上 UIToolBar 上的模态视图中的 UIButton 触摸未检测到

Canny 边缘检测未检测到 100% 水平/未旋转的线

未检测到 SceneKit 碰撞检测

Unity raycast 未检测到之前已检测到的对象