AWSAppSync 和 AWSMobileClient 不兼容

Posted

技术标签:

【中文标题】AWSAppSync 和 AWSMobileClient 不兼容【英文标题】:AWSAppSync and AWSMobileClient incompatible 【发布时间】:2019-05-23 08:05:52 【问题描述】:

我正在尝试将AWSAppSyncAWSMobileClient 安装到我的ios 应用程序中。 当我想使用 pod install 时。

我已尝试仅使用 AWSAppSync 或 AWSMobileClient。它们单独使用时很好,但它们不能在同一个 pod 文件中工作。我还尝试了不同版本的 AWSAppSync 和 AWSCore。 AWSCore 2.7.0 或 2.8.0 在这种情况下没有任何区别。不同版本的 AWSAppSync 返回相同的错误。

#installed 
#pod 'AWSCore', '~> 2.8.0'

pod 'AWSAppSync', '~> 2.6.24'

pod 'AWSMobileClient', '~> 2.8.0'
pod 'AWSAuthUI', '~> 2.8.0'
pod 'AWSUserPoolsSignIn', '~> 2.8.0'

这是返回的内容:

[!] CocoaPods could not find compatible versions for pod "AWSCore":
In snapshot (Podfile.lock):
  AWSCore (= 2.7.4, ~> 2.7.0)

In Podfile:
  AWSAppSync (~> 2.6.24) was resolved to 2.6.25, which depends on
  AWSCore (~> 2.7.0)

  AWSMobileClient (~> 2.8.0) was resolved to 2.8.0, which depends on
  AWSAuthCore (= 2.8.0) was resolved to 2.8.0, which depends on
  AWSCore (= 2.8.0)

【问题讨论】:

【参考方案1】:

一般来说,需要使用兼容版本的 AWSAppSync 和 AWSiOSSDK(提供 AWSCore、AWSMobileClient 等)。最好的方法是让已解析的依赖项从您要使用的 AWSAppSync 版本流出。例如,如果您使用的是 AppSync 2.6.24,那么您应该使用 ~> 2.6.0 版本的依赖库。由于您似乎想使用 AWSMobileClient 进行身份验证,因此您需要将 AWSAppSync 升级到较新的版本。

您在使用最新的 AWSAppSync 版本 (2.8.0) 时仍然遇到问题吗?我已经成功地将它与最新的 AWSMobileClient (2.8.1) 一起使用。为了确定,您是在pod install 之前发出pod repo update,还是调用pod install --repo-update 以确保Spec repo 是最新的?这是我在使用 AWSAppSync 的应用程序中成功使用的配置:

target 'PostsApp' do
  use_frameworks!
  pod 'AWSAppSync', '~> 2.8.0'
  pod 'AWSMobileClient', '~> 2.8.0'
  pod 'AWSAuthUI', '~> 2.8.0'
  pod 'AWSUserPoolsSignIn', '~> 2.8.0'
end

解析如下(取自 Podfile.lock):

PODS:
  - AWSAppSync (2.8.0):
    - AWSCore (~> 2.8.0)
    - ReachabilitySwift (~> 4.3.0)
    - SQLite.swift (= 0.11.5)
  - AWSAuthCore (2.8.1):
    - AWSCore (= 2.8.1)
  - AWSAuthUI (2.8.1):
    - AWSAuthCore (= 2.8.1)
    - AWSCore (= 2.8.1)
  - AWSCognitoIdentityProvider (2.8.1):
    - AWSCognitoIdentityProviderASF (= 1.0.1)
    - AWSCore (= 2.8.1)
  - AWSCognitoIdentityProviderASF (1.0.1)
  - AWSCore (2.8.1)
  - AWSMobileClient (2.8.1):
    - AWSAuthCore (= 2.8.1)
    - AWSCognitoIdentityProvider (= 2.8.1)
  - AWSUserPoolsSignIn (2.8.1):
    - AWSAuthCore (= 2.8.1)
    - AWSCognitoIdentityProvider (= 2.8.1)
  - ReachabilitySwift (4.3.0)
  - SQLite.swift (0.11.5):
    - SQLite.swift/standard (= 0.11.5)
  - SQLite.swift/standard (0.11.5)

【讨论】:

只是添加一个注释,如果pod install 不适用于那些较新的版本,您必须执行以下命令pod repo update 来更新cocoapods 存储库以允许您访问较新的版本版本 @btrballin 我认为答案中提到的调用pod install --repo-update 会完成同样的事情,对吗?

以上是关于AWSAppSync 和 AWSMobileClient 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正确的 @connection 值在 AwsAppSync 突变中插入记录?

AWS AppSync 与 Laravel 的正确集成?

AWSAppSync GraphQL突变执行两次

vue-apollo awsappsync - 刷新凭证

AWSAppSync GraphQL Mutation 执行了两次

如何使用 AWS AppSync 将文件上传到 AWS S3