shmily

update readme

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 +