DigiMeSDK 5.0.7

DigiMeSDK 5.0.7

brokenzzOliver Leungdigi.me Ltd 维护。



DigiMeSDK 5.0.7

  • digi.me Ltd.

Developer Chat Apache 2.0 License Swift Web Support


简介

digi.me 私密分享平台让开发者能够在完全尊重用户隐私且符合 GDPR 规定的前提下,利用来自成千上万来源的用户数据。我们的基于同意的解决方案允许您精确定义需要的数据术语,并且用户可以完全透明地看到这些术语,从而能够做出是否同意的知情选择。

要求

部署

  • iOS 13+

安装

Swift 包管理器

添加依赖

  1. DigiMeSDK 包添加到您的应用程序的 Package.swift 或 Xcode 项目的依赖项中。用最新的 DigiMeSDK 版本号替换 "x.x.x",您可以在 [DigiMeSDK 发布页面](https://github.com/digime/digime-sdk-ios/releases) 上找到。

    .package(name: "DigiMeSDK", url: "https://github.com/digime/digime-sdk-ios.git", from: "x.x.x")
  2. DigiMeSDK 添加到您的目标依赖项中

    .target(name: "example", dependencies: ["DigiMeSDK"]),

导入包

import DigiMeSDK

CocoaPods

  1. DigiMeSDK 添加到您的 Podfile

    use_frameworks!
    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '13.0'
    
    target 'TargetName' do
    	pod 'DigiMeSDK'
    end

注意:目前我们不支持将 DigiMeSDK 连接为静态库。

use_frameworks! 标志必须在 Podfile 中设置

  1. 导航到您的 Podfile 目录并运行以下命令

    $ pod install --repo-update

入门 - 5 个简单步骤!

我们针对 digi.me 私有共享 SDK 的最常见用法编制了一份快速入门指南,您可以在以下位置找到。尽管如此,我们仍然敦促您进一步查阅文档

本示例将向您展示如何配置 SDK,以及如何开始使用 检索用户数据

1. 获取您的合约ID、应用程序ID和私钥

要访问digi.me平台,您需要为您的应用程序获取一个AppID。您可以通过填写注册表单来获取它,请点击这里

在生产环境中,您还需要从digi.me支持处获取您自己的合约ID私钥。但是,出于沙盒测试的目的,您可以使用示例项目中的一个合约(请参阅/Examples目录)。

2. 配置回调转发

由于digi.me Private Sharing SDK通过浏览器钩子接收回调,您需要将openURL事件转发给SDK以便它能够处理响应。在您应用程序的代理(通常是SceneDelegate)中覆盖以下方法: scene:openURLContexts:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
   	guard let context = URLContexts.first else {
		return
   	}
   
   	CallbackService.shared().handleCallback(url: context.url)
}

并在Info.plist中注册自定义URL协议,以便您的应用程序可以接收来自Digi.me应用程序的回调。仍然在Info.plist中添加

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>Consent Access</string>
<key>CFBundleURLSchemes</key>
<array>
<string>digime-ca-YOUR_APP_ID</string>
</array>
</dict>
</array>

其中,YOUR_APP_ID应替换为您的AppID

3. 配置DigiMe对象

DigiMe是您将主要用于与SDK交互的对象。它使用一个Configuration对象实例化。

Configuration对象使用您的App ID合约ID私钥实例化。以下代码片段显示了如何将所有这些结合起来以获取一个配置成功的DigiMe对象

let privateKey = """
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA...
-----END RSA PRIVATE KEY-----
"""

do {
    let configuration = try Configuration(appId: "YOUR_APP_ID", contractId: "YOUR_CONTRACT_ID", privateKey: privateKey)
    let digiMe = DigiMe(configuration: configuration)
}
catch {
    ...
}

4. 请求同意

在您能够访问用户数据之前,您必须获得他们的同意。这通过在客户端对象上调用authorize来完成。您需要提供一个服务标识符,对于您想要请求访问的服务;这可以通过查阅开发者文档中的服务定义或使用发现API来找到。

digiMe.authorize(serviceId: service?.identifier, readOptions: nil) { result in
    switch result {
    case .success(let credentials):
        // store credentials and continue on to fetch data.
    
    case.failure(let error):
        // handle failure.
    }
}

如果用户同意,幕后将创建一个会话;这对于后续获取数据的调用是使用的。如果用户拒绝同意,将返回表示此内容的错误。请参阅错误处理

一旦您有了会话,您就可以请求数据。我们努力使这个过程尽可能简单,因此只暴露一个执行此操作的方法。

let credentials = my_stored_credentials
digiMe.readAllFiles(credentials: credentials, readOptions: nil) { result in
	switch result {
   	case .success(let file):
        // Access data or metadata of file.
        
   case .failure(let error):
       // Handle Error
   }
} completion: { result in
    switch result {
    case .success(let (fileList, refreshedCredentials)):
        // Handle success and update stored credentials as these may have been refreshed.
    case .failure(let error):
        // Handle failure.
    }
}

对于每个文件,第一个'文件处理程序'块将被调用。如果下载成功,您将收到一个File对象。如果下载失败,将返回一个错误。

一旦所有文件都下载完成,第二个块将被调用来通知您。在数据流中断或会话无效的情况下(例如,它可能已过期),您将在第二个块中收到错误。请参阅错误处理

请注意,如果您喜欢自己管理这个过程,我们还会公开其他方法。

digi.me 以 SDK 完全是开源的而自豪,遵循 Apache 2.0 许可证;我们欢迎所有开发者的贡献。

当您进行贡献时,请在提交拉取请求之前确保您的更改符合我们的贡献指南

快速入门中讨论的主题仅仅是 digi.me 私有共享为数据消费者(如您)提供的强大功能的一小部分。我们强烈建议您探索文档以获取更深入示例和指南,以及故障排除建议和对提供的大量功能的展示。

此外,在 examples 文件夹中有大量基于 digi.me 构建的应用程序示例。请随意查看这些示例以了解私有共享的强大功能。