Torus-directSDK 1.2.0

Torus-directSDK 1.2.0

Shubham Rathi 维护。



  • Torus Labs

Torus-direct-swift-sdk

简介

此仓库允许 iOS 应用直接从 Torus 网络检索存储的密钥。Torus 网络的声明层是通用的,以下是使用 SDK 通过 Google 访问密钥的示例。您可以在此处阅读更多有关与 Torus 网络交互的信息 这里

功能

  • 所有 API 返回 Promise (mxcl/PromiseKit)。您可以从 "yannickl/AwaitKit" 导入以将 API 转换为 async/await 格式。

用法

1. 安装

Swift 包管理器

在项目设置中,将 Github URL 添加为 swift 包依赖项。

import PackageDescription

let package = Package(
    name: "TorusSwiftDirectSDK", 
    dependencies: [
        .package(name: "TorusSwiftDirectSDK", url: "https://github.com/torusresearch/torus-direct-swift-sdk", from: "1.0.0"))
    ]
)

CocoaPods

pod 'Torus-directSDK', '~> 1.0.0'

手动导入或其他包

如果您需要除 SPM 或 Cocoapods 以外的包管理器,请与我们联系 [email protected],或者您可以手动克隆存储库并在项目中将其作为框架导入。

2. 初始化

根据所需的登录方式初始化 SDK。以下示例展示了如何对一个单个 Google 登录进行初始化。 redirectURL 指的是登录流程重定向到您的应用的 URL,它应该有您的应用已在其他处注册的方案,例如 com.mycompany.myapp://redirectbrowserRedirectURL 指的是浏览器在登录流程中应使用的页面,它应该有 http 或 https 方案。

import TorusSwiftDirectSDK

let sub = SubVerifierDetails(loginType: .installed, // default .web
                            loginProvider: .google,
                            clientId: "<your-client-id>",
                            verifierName: "<verifier-name>",
                            redirectURL: "<your-redirect-url>",
                            browserRedirectURL: "<your-browser-redirect-url>")
let tdsdk = TorusSwiftDirectSDK(aggregateVerifierType: "<type-of-verifier>," aggregateVerifierName: "<verifier-name>", subVerifierDetails: [sub], network: <etherum-network-to-use>)

// controller is used to present a SFSafariViewController.
tdsdk.triggerLogin(controller: <UIViewController>?, browserType: <method-of-opening-browser>, modalPresentationStyle: <style-of-modal>).done{ data in
    print("private key rebuild", data)
}.catch{ err in
    print(err)
}

登录依赖于验证器脚本/验证器。还有其他验证器,包括 single_id_verifierand_aggregate_verifieror_aggregate_verifiersingle_logins,根据您所需的登录方式可能需要使用它们之一。为了设置您应用程序的验证器脚本,请联系 [email protected],或详细了解验证器,请参阅 文档

3. 处理 OAuth/认证 URL 重定向

您可以通过两种方式设置重定向;URL方案或通用链接。通常我们建议用户使用URL方案,因为通用链接需要额外的用户交互。《code>handle(url: URL) 类方法实现 NSNotification 以处理 URL 回调。

设置URL方案

在您的目标信息标签中,添加应用程序名称(例如:my-wallet-app)。在 OAuth 提供商设置页面中,将重定向 URL 添加到允许的重定向 URL 列表中。

  • 对于 SwiftUI,不使用代理(iOS 14+)
.onOpenURL { url in
    guard let url = URLContexts.first?.url else {
        return
    }
    TorusSwiftDirectSDK.handle(url: url)
}
  • 对于 SwiftUI,在 SceneDelegate 中实现以下内容
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
        return
    }
    TorusSwiftDirectSDK.handle(url: url)
}
  • 对于 Storyboard,在 app AppDelegate 中实现以下内容
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    if url.host == "my-wallet-app" {
        TorusSwiftDirectSDK.handle(url: url)
    }
    return true
}

通用链接

通用链接允许用户智能地跟随链接到您的应用内的内容或您的网站。请参考实现文档

  • 对于 SwiftUI,
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let urlToOpen = userActivity.webpageURL else {
        return
    }
    TorusSwiftDirectSDK.handle(url: urlToOpen)
}
  • 对于 Storyboard,
func application(_ application: UIApplication, continue userActivity: UIUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool
{
    // Get URL components from the incoming user activity
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let incomingURL = userActivity.webpageURL,
        let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else {
            return false
    }
    TorusSwiftDirectSDK.handle(url: incomingURL)
}

完成设置后,请联系[email protected]开始测试网络上验证器的配置。

要求

  • Swift 5