Showing
1 changed file
with
252 additions
and
2 deletions
| 1 | -# HHBigFile | ||
| 2 | -100MB file test | 1 | +# HHDoctorSDK 接入说明 |
| 2 | + | ||
| 3 | +<p align="right"> | ||
| 4 | +北京和缓医疗科技有限公司<br/> | ||
| 5 | +网址:https://www.hh-medic.com <br/> | ||
| 6 | +地址:北京市东城区东直门来福士7层 | ||
| 7 | +</p> | ||
| 8 | + | ||
| 9 | + * [HHDoctorSDK 接入说明](#hhdoctorsdk-接入说明) | ||
| 10 | + * [1. 概要介绍](#1-概要介绍) | ||
| 11 | + * [2. 集成方式](#2-集成方式) | ||
| 12 | + * [2.1. 手动集成](#21-手动集成) | ||
| 13 | + * [2.2. 自动集成](#22-自动集成) | ||
| 14 | + * [2.3. 调用规则](#23-调用规则) | ||
| 15 | + * [3. 初始化](#3-初始化) | ||
| 16 | + * [4. 登录账户](#4-登录账户) | ||
| 17 | + * [4.1. 登录](#41-登录) | ||
| 18 | + * [4.2. 登出](#42-登出) | ||
| 19 | + * [5. 视频呼叫](#5-视频呼叫) | ||
| 20 | + * [6. 代理(delegate)(可选)](#6-代理delegate可选) | ||
| 21 | + * [6.1. 加入](#61-加入) | ||
| 22 | + * [6.2. 移除](#62-移除) | ||
| 23 | + | ||
| 24 | +## 1.概要介绍 | ||
| 25 | +## 2.集成方式 | ||
| 26 | + HHDoctorSDK 提供两种集成方式:您既可以通过 CocoaPods 自动集成我们的 SDK,也可以通过手动下载 SDK, 然后添加到您的项目中。 | ||
| 27 | +我们提供的下载地址: | ||
| 28 | + | ||
| 29 | + 我们提供了发布仓库 [HHDoctorSDK](https://code.hh-medic.com/hh_public/HHDoctorSDK.ios)。 | ||
| 30 | + | ||
| 31 | +由于呼叫视频需要相机相册权限,需要在info.plist中添加对应的权限,否则会导致无法调用。 | ||
| 32 | + | ||
| 33 | +``` | ||
| 34 | +<key>NSPhotoLibraryUsageDescription</key> | ||
| 35 | +<string>应用需要使用相册权限,以便您向医生发送健康资料。</string> | ||
| 36 | +<key>NSCameraUsageDescription</key> | ||
| 37 | +<string>应用需使用相机权限,以便您向医生进行视频咨询。</string> | ||
| 38 | +<key>NSMicrophoneUsageDescription</key> | ||
| 39 | +<string>应用需使用麦克风权限,以便您向医生进行视频咨询。</string> | ||
| 40 | +``` | ||
| 41 | + | ||
| 42 | +### 2.1.手动集成 | ||
| 43 | + | ||
| 44 | +1. 根据自己工程需要,下载对应版本的 HHMSDK,得到 NIMSDK.framework ,NIMAVChat.framework,NVS.framework,SecurityKit.framework 和 HHDoctorSDK.framework,以及未链接的全部三方依赖库 ,将他们导入工程。 | ||
| 45 | +2. 添加其他 HHDoctorSDK 依赖库。 | ||
| 46 | + | ||
| 47 | + - SystemConfiguration.framework | ||
| 48 | + - MobileCoreServices.framework | ||
| 49 | + - AVFoundation.framwork | ||
| 50 | + - CoreTelephony.framework | ||
| 51 | + - CoreMedia.framework | ||
| 52 | + - VideoToolbox.framework | ||
| 53 | + - AudioToolbox.framework | ||
| 54 | + - libz | ||
| 55 | + - libsqlite3.0 | ||
| 56 | + - libc++ | ||
| 57 | +3. 在 `Build Settings` -> `Other Linker Flags` 里,添加选项 `-ObjC`。 | ||
| 58 | +4. 在 `Build Settings` -> `Enable Bitcode 里,设置为 `No`。 | ||
| 59 | +5. 如果需要在后台时保持音频通话状态,在 `Capabilities` -> `Background Modes` 里勾选 `audio, airplay, and Picture in Picture`。 | ||
| 60 | + | ||
| 61 | +### 2.2.自动集成 | ||
| 62 | +* 在 `Podfile` 文件中加入 | ||
| 63 | + | ||
| 64 | +```shell | ||
| 65 | +use_frameworks! | ||
| 66 | +pod 'HHDoctorSDK', :git => "git@code.hh-medic.com:hh_public/HHDoctorSDK.ios.git" | ||
| 67 | +``` | ||
| 68 | +* 安装 | ||
| 69 | + | ||
| 70 | +``` shell | ||
| 71 | +pod install | ||
| 72 | +``` | ||
| 73 | + | ||
| 74 | +### 2.3.调用规则 | ||
| 75 | +所有 HHDoctorSDK 业务均通过 HHMSDK 单例调用 | ||
| 76 | + | ||
| 77 | +```swift | ||
| 78 | +public class HHMSDK : NSObject { | ||
| 79 | + | ||
| 80 | + public static let `default`: HHDoctorSDK.HHMSDK | ||
| 81 | +} | ||
| 82 | +``` | ||
| 83 | + | ||
| 84 | +## 3.初始化 | ||
| 85 | +在使用 HHDoctorSDK 任何方法之前,都应该首先调用初始化方法。正常业务情况下,初始化方法有仅只应调用一次。 | ||
| 86 | + | ||
| 87 | +HHSDKOptions 选项参数列表 | ||
| 88 | + | ||
| 89 | +参数|类型|说明 | ||
| 90 | +------|---|-------- | ||
| 91 | +isDevelopment|Bool|服务器模式(测试/正式) | ||
| 92 | +isDebug|Bool|调试模式(是否打印日志) | ||
| 93 | +hudManager| HHHUDable|自定义 progressHUD | ||
| 94 | +hudDisTime| Double|hud 自动消失时间 | ||
| 95 | + | ||
| 96 | +调用示例 | ||
| 97 | + | ||
| 98 | +```swift | ||
| 99 | +let option = HHSDKOptions(isDebug: true, isDevelop: true) | ||
| 100 | +// let option = HHSDKOptions() | ||
| 101 | +// option.isDevelopment = true | ||
| 102 | +// option.isDebug = true | ||
| 103 | +// option.hudDisTime = 2 | ||
| 104 | +HHMSDK.default.start(option: option) | ||
| 105 | +``` | ||
| 106 | + | ||
| 107 | +## 4. 登录账户 | ||
| 108 | +在对医生视频呼叫之前,需要先登录账号信息。账号的 uuid 由和缓提供。 | ||
| 109 | +### 4.1. 登录 | ||
| 110 | + | ||
| 111 | +* 原型 | ||
| 112 | + | ||
| 113 | +```swift | ||
| 114 | +public class HHMSDK : NSObject { | ||
| 115 | + | ||
| 116 | + /// 登录账号 | ||
| 117 | + /// | ||
| 118 | + /// - Parameters: | ||
| 119 | + /// - uuid: 用户的 唯一标志符 | ||
| 120 | + /// - completion: 完成回调 | ||
| 121 | + public func login(uuid: Int, completion: @escaping HHMedicSDK.HHLoginHandler) | ||
| 122 | +} | ||
| 123 | +``` | ||
| 124 | + | ||
| 125 | +* 调用示例 | ||
| 126 | + | ||
| 127 | +```swift | ||
| 128 | +// 登录 | ||
| 129 | +HHMSDK.default.login(uuid: 100001531) { (error) in | ||
| 130 | + if let aError = error { | ||
| 131 | + print("登录错误: " + aError.localizedDescription) | ||
| 132 | + } | ||
| 133 | +} | ||
| 134 | +``` | ||
| 135 | +error 为登录错误信息,成功则为 nil。 | ||
| 136 | + | ||
| 137 | +### 4.2. 登出 | ||
| 138 | +应用层登出/注销/切换自己的账号时需要调用 HHMSDK 的登出操作,该操作会通知和缓服务器进行 APNs 推送信息的解绑操作,避免用户已登出但推送依然发送到当前设备的情况发生。 | ||
| 139 | + | ||
| 140 | +* 原型 | ||
| 141 | + | ||
| 142 | +```swift | ||
| 143 | +public class HHMSDK : NSObject { | ||
| 144 | + | ||
| 145 | + /// 登出 | ||
| 146 | + public func logout() | ||
| 147 | +} | ||
| 148 | +``` | ||
| 149 | + | ||
| 150 | +* 调用示例 | ||
| 151 | + | ||
| 152 | +```swift | ||
| 153 | +// 登出 | ||
| 154 | +HHMSDK.default.logout() | ||
| 155 | +``` | ||
| 156 | + | ||
| 157 | +## 5. 视频呼叫 | ||
| 158 | +根据实际场景的不同,可以进行成人、儿童方向的向医生咨询。 | ||
| 159 | + | ||
| 160 | +* 原型 | ||
| 161 | + | ||
| 162 | +```swift | ||
| 163 | +public class HHMSDK : NSObject { | ||
| 164 | + | ||
| 165 | + /// 主叫发起通话 | ||
| 166 | + /// | ||
| 167 | + /// - Parameter type: 呼叫类型 | ||
| 168 | + public func startCall(_ type: HHMedicSDK.HHCallType) | ||
| 169 | +} | ||
| 170 | +``` | ||
| 171 | + | ||
| 172 | +* 调用示例 | ||
| 173 | + | ||
| 174 | +```swift | ||
| 175 | +// 咨询儿童问题 | ||
| 176 | +HHMSDK.default.startCall(.child) | ||
| 177 | + | ||
| 178 | +// 咨询成人问题 | ||
| 179 | +HHMSDK.default.startCall(.adult) | ||
| 180 | +``` | ||
| 181 | + | ||
| 182 | +HHCallType 枚举列表 | ||
| 183 | + | ||
| 184 | +值 | 说明 | ||
| 185 | +--------- | ------------- | ||
| 186 | +child | 儿童 | ||
| 187 | +adult | 成人 | ||
| 188 | + | ||
| 189 | +## 6. 代理(delegate)(可选) | ||
| 190 | +代理主要用于视频过程中的状态反馈。如果不需要状态反馈,可以不考虑该代理。 | ||
| 191 | +所有的代理方法都是可选的,可以根据自己的实际需要实现不同的代理方法。 | ||
| 192 | + | ||
| 193 | +* 原型 | ||
| 194 | + | ||
| 195 | +```swift | ||
| 196 | +/// 视频管理器代理 | ||
| 197 | +public protocol HHMVideoDelegate : NSObjectProtocol { | ||
| 198 | + | ||
| 199 | + /// 主动视频时的呼叫状态变化 | ||
| 200 | + /// | ||
| 201 | + /// - Parameter state: 当前呼叫状态 | ||
| 202 | + public func callStateChange(_ state: HHMedicSDK.HHMCallingState) | ||
| 203 | + | ||
| 204 | + /// 通话已接通 | ||
| 205 | + public func callDidEstablish() | ||
| 206 | + | ||
| 207 | + /// 呼叫失败 | ||
| 208 | + public func onFail(error: Error) | ||
| 209 | + | ||
| 210 | + public func onCancel() | ||
| 211 | + | ||
| 212 | + /// 通话已结束 (接通之后才有结束) | ||
| 213 | + public func callDidFinish() | ||
| 214 | + | ||
| 215 | + /// 转呼医生 | ||
| 216 | + public func onExtensionDoctor() | ||
| 217 | + | ||
| 218 | + /// 接收到呼叫(被呼叫方) | ||
| 219 | + /// | ||
| 220 | + /// - Parameters: | ||
| 221 | + /// - callID: 呼叫的 id | ||
| 222 | + /// - from: 呼叫人 id | ||
| 223 | + public func onReceive(_ callID: String, from: String) | ||
| 224 | + | ||
| 225 | + /// 收到视频呼入时的操作(被呼叫方) | ||
| 226 | + /// | ||
| 227 | + /// - Parameter accept: 接受或者拒接 | ||
| 228 | + public func onResponse(_ accept: Bool) | ||
| 229 | + | ||
| 230 | + /// 缺少必要权限 | ||
| 231 | + /// | ||
| 232 | + /// - Parameter type: 缺少的权限类型 | ||
| 233 | + public func onLeakPermission(_ type: HHMedicSDK.PermissionType) | ||
| 234 | +} | ||
| 235 | +``` | ||
| 236 | + | ||
| 237 | +### 6.1. 加入 | ||
| 238 | +代理支持同时设置多个。 | ||
| 239 | + | ||
| 240 | +```swift | ||
| 241 | +HHMSDK.default.add(delegate: self) | ||
| 242 | +``` | ||
| 243 | + | ||
| 244 | +### 6.2. 移除 | ||
| 245 | + | ||
| 246 | +```swift | ||
| 247 | +HHMSDK.default.remove(delegate: self) | ||
| 248 | +``` | ||
| 249 | + | ||
| 250 | + | ||
| 251 | + | ||
| 252 | + |
-
Please register or login to post a comment