DigiMeHealthKit 5.0.8

DigiMeHealthKit 5.0.8

Alex Hamilton 维护。



  • digi.me Ltd.

Developer Chat Apache 2.0 License Swift Web Support


介绍

digime.me 私有共享平台赋予开发者以完全尊重用户隐私,并符合 GDPR 的方式利用来自数千个来源的用户数据。我们以用户同意为基础的解决方案允许您定义您想要的数据条款,并让用户完全透明地看到这些条款,使他们能够做出是否授予同意的知情选择。

需求

部署

  • iOS 13+

安装

Swift Package Manager

添加依赖项

  1. DigiMeSDK 包添加到您的应用的 Package.swift 或 Xcode 项目的依赖项中。用最新的 DigiMeSDK 版本 替换 "x.x.x"

    .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 支持处获取您的自己的 Contract IDPrivate Key。但是,对于沙盒用途,您可以使用示例项目中的一个合约(见 /Examples 目录)。

2. 配置回调转发

由于 digi.me 私有共享 SDK 会连接到浏览器以接收回调,因此您需要将 openURL 事件转发到 SDK,以便它能够处理响应。在您应用的代理器(通常是 SceneDelegate)中覆盖以下方法

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 IDContract IDPrivate Key 实例化。以下代码片段显示了如何将所有这些组合在一起以获取配置的 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.
    }
}

如果用户授予许可,则后台将创建会话;这用于后续调用以获取数据。如果用户拒绝许可,将返回一个表示此错误的消息。请参阅 错误处理

5. 获取数据

一旦您有一个会话,您可以请求数据。我们努力让这个过程尽可能简单,所以我们只公开一个方法来执行此操作。

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 对象。如果下载失败,则返回一个错误。

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

File 对象暴露了 data 属性,该属性包含了文件的原始数据以及 mimeType 属性。针对具有 JSON 或图像 MIME 类型的文件,提供了方便的方法将原始数据解码成适当的格式,以便于您轻松提取应用程序所需的数据。此外,metadata 属性可以描述文件。在本例中,由于数据来自外部服务,因此元数据将是一个 mapped 类型,描述文件的内容以及相关服务的详细信息。

请注意,如果您希望自行管理此过程,我们也提供了其他方法。

贡献

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

在提交拉取请求之前,我们要求您确保您的更改符合我们的 贡献准则

更多内容

在“快速入门”下讨论的主题只是 digi.me 私密共享能力的一小部分,这种能力为像您这样的数据消费者提供了力量。我们强烈建议您探索 文档 以获取更多深入示例和指南、故障排除建议以及众多能力的展示。

此外,在 examples 文件夹中还有许多基于 digi.me 的示例应用程序。您可以自由查看它们,以了解私密共享的强大之处。