此库已弃用。
感谢大家所做的贡献。
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 是一个去中心化的依赖管理器,它可以构建您的依赖并为您提供二进制框架。
您可以使用 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 代码分发的工具,并且集成到了 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 路径下找到所需的资源。 收集这些文件并将它们添加到您的项目中。
使用 Xcode
您还应该额外配置 CoinbaseSDK 目标。在 Build Phases 选项卡中,通过选择 New Copy File Phase 添加一个新阶段。 将所需的资源拖放到此阶段。
使用控制台
要提供所需的资源,您应该将它们复制到包含已构建文件的位置。
示例:如果所需文件位于目录 Resources 中,并且您在 debug 模式下为 x86_64-apple-macosx10.10 平台构建,则可以使用以下命令复制资源
cp Resources/* ./.build/x86_64-apple-macosx10.10/debug
在您想要使用 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 的实例提供访问令牌,则您只能成功使用以下资源
CurrenciesResource (货币资源)ExchangeRatesResource (汇率资源)PricesResource (价格资源)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 的更多信息。
CoinbaseSDK 提供了包装器,允许您将其与 RxSwift 一起使用。 要获取有关如何使用它的更多信息,请阅读页面。
要查看有关如何使用 CoinbaseSDK 的更多详细信息,您可以查看示例应用程序或阅读一些 Coinbase 示例。
要能够使用 Coinbase SDK iOS 示例应用程序,您应该设置 OAuth2 应用程序密钥。 您可以在创建 Coinbase OAuth2 应用程序后获得所需的密钥。
clientId、clientSecret 和 redirectUri。iOS Example 项目中,填写 Source/Constants.swift 文件中 OAuth2ApplicationKeys 的空值。redirectURI 中使用的自定义 scheme。 在 Info.plist 文件中添加<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 文件。