Coinbase iOS SDK

此库已弃用。

感谢大家所做的贡献。

Platform Language Carthage compatible CocoaPods compatible License

目录

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理工具。您可以使用以下命令安装它

$ gem install cocoapods

要使用 CocoaPods 将 Coinbase SDK 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

pod 'coinbase-official', '~> 4.0'

然后,运行以下命令

$ pod install

如果您想使用 Coinbase SDK 的 RxSwift 扩展,请添加

pod 'coinbase-official/RxSwift', '~> 4.0'

Carthage

Carthage 是一个去中心化的依赖管理器,它可以构建您的依赖并为您提供二进制框架。

您可以使用 Homebrew 通过以下命令安装 Carthage

$ brew update
$ brew install carthage

要使用 Carthage 将 Coinbase SDK 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "coinbase/coinbase-ios-sdk"

运行 carthage update 来构建框架,并将构建好的 CoinbaseSDK.framework 拖入您的 Xcode 项目中。 如果您想使用 Coinbase SDK 的 RxSwift 扩展,也请将 RxCoinbaseSDK.framework 添加到您的项目中。

Swift Package Manager

Swift Package Manager 是一个用于自动化 Swift 代码分发的工具,并且集成到了 swift 编译器中。

一旦您设置了 Swift 包,添加 Coinbase SDK 作为依赖项就像将其添加到您的 Package.swift 文件的 dependencies 值一样简单。

dependencies: [
        .package(url: "https://github.com/coinbase/coinbase-ios-sdk")
    ]

并在您想要使用的目标中

targets: [
    .target(
        name: "<project_name>",
        dependencies: ["CoinbaseSDK"])
]

如果您想使用 Coinbase SDK 的 RxSwift 扩展,请将 "RxCoinbaseSDK" 添加到目标的 dependencies 中。

重要提示

Swift Package Manager 目前不支持资源文件。 Coinbase SDK 需要额外的资源文件才能正常工作 (受信任的 SSL 证书)。 如果您想使用 Swift Package Manager,您应该手动提供这些资源。

您可以在 Coinbase iOS SDK GitHub 仓库中的 Source/Supporting Files/PinnedCertificates 路径下找到所需的资源。 收集这些文件并将它们添加到您的项目中。

基本用法

在您想要使用 CoinbaseSDK 的源文件中添加

import CoinbaseSDK

如果您不想使用 CocoaPods 而是想使用 RxSwift 的 CoinbaseSDK 扩展,请通过添加以下行来导入 RxCoinbaseSDK

import RxCoinbaseSDK

要使用 CoinbaseSDK,您需要拥有 Coinbase 类的一个实例。 您可以创建一个新的 Coinbase 实例

let coinbase = Coinbase()

或者您可以使用方便的静态实例

Coinbase.default

身份验证

要使用需要身份验证的资源,您应该为 Coinbase 实例提供有效的访问令牌。

可以通过将访问令牌的值直接设置为 coinbase 的属性来提供

coinbase.accessToken = accessToken

或者通过将其传递给初始化器

let coinbase = Coinbase(accessToken: accessToken)

如果您没有为 Coinbase 的实例提供访问令牌,则您只能成功使用以下资源

  1. CurrenciesResource (货币资源)
  2. ExchangeRatesResource (汇率资源)
  3. PricesResource (价格资源)
  4. TimeResource (时间资源)

获取访问令牌

要获取访问令牌,Coinbase iOS SDK 使用 OAuth2 身份验证。

您应该在调用任何授权方法之前,在 Coinbase 实例的 oauth 属性上调用 configure 方法来设置所有必需的属性

coinbase.oauth.configure(clientID: <client_id>,
                         clientSecret: <client_secret>,
                         redirectURI: <redirect_uri>)

然后您可以通过调用 beginAuthorization 来启动 OAuth 流程

try coinbase.oauth.beginAuthorization(scope: [Scope.Wallet.Accounts.read, ...])

它会将用户重定向到 Safari 浏览器,在那里他们可以授权您的应用程序。

AppDelegate 中,您应该通过在 application(_:open:options:) 中调用 coinbase.oauth.completeAuthorization 方法来处理重定向返回

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        let handleCoinbaseOAuth = coinbase.oauth.completeAuthorization(url) { result in
            // setup coinbase, e.g. coinbase.accessToken = result.value?.accessToken
        }
        return handleCoinbaseOAuth
    }

要获得有关如何将 OAuth2 与 CoinbaseSDK 结合使用的详细指南,请阅读 获取访问令牌

注意

用于调用 completeAuthorization 的 Coinbase 实例应与您用于调用 beginAuthorization 方法的实例相同。

重要提示

访问令牌 的生命周期很短,过期后,应使用 刷新令牌 刷新它。

您可以手动执行刷新,或者通过在 Coinbase 实例上使用 TokenRefreshStrategy.refresh 调用 setRefreshStrategy 来允许自动刷新。

令牌刷新 中阅读有关 TokenRefreshStrategy 的更多信息。

RxSwift

CoinbaseSDK 提供了包装器,允许您将其与 RxSwift 一起使用。 要获取有关如何使用它的更多信息,请阅读页面

示例

要查看有关如何使用 CoinbaseSDK 的更多详细信息,您可以查看示例应用程序或阅读一些 Coinbase 示例

示例应用程序

要能够使用 Coinbase SDK iOS 示例应用程序,您应该设置 OAuth2 应用程序密钥。 您可以在创建 Coinbase OAuth2 应用程序后获得所需的密钥。

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Coinbase OAuth Scheme</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>[redirect_uri_scheme]</string>
        </array>
    </dict>
</array>

注意

确保您在 redirectURI 常量和您的 Info.plist 文件中使用了相同的 URI scheme。

例如,如果您的 [redirect_uri_scheme]com.example.app,那么您的重定向 URI 可以是:com.example.app://callback

测试

要能够运行测试,您应该下载依赖项。 为此,请运行

carthage bootstrap --platform iOS

如果您没有安装 Carthage,请查看 安装说明

之后,您可以打开 Coinbase.xcworkspace 并选择 CoinbaseSDK 目标并按 ⌘+U 开始测试。

许可证

Coinbase 在 Apache License 2.0 下可用。 有关更多信息,请参见 LICENSE 文件。