本章将介绍如何将 SDK 集成到您自己创建的项目中。
创建 macOS 项目
参考以下步骤创建一个 macOS 项目。若已有 macOS 项目,可以直接查看集成 JC SDK。
- 打开 Xcode 并点击 Create a new Xcode project。 
- 选择项目类型为 Cocoa App,并点击 Next。 
- 输入项目信息,如项目名称、开发团队信息、组织名称和语言,并点击 Next。 
如果您没有添加过开发团队信息,点击 Xcode > Preferences… > Accounts,点击左下角加号并按照屏幕提示登入 Apple ID,完成后即可选择您的账户作为开发团队。
- 选择项目存储路径,并点击 Create。 
- 进入 TARGETS > Project Name > Signing & Capabilities 菜单,勾选 Automatically manage signing。 
集成SDK
mac 端使用的动态库集成 SDK。
- 解压并打开下载的 JC SDK 动态库,在 sdk 文件目录下包含 JCSDKOC.framework、include 和 lib 三个文件夹。 
- 将 - sdk文件夹拷贝到您工程所在的目录下。
- 导入 SDK - 点击 ‘General’,在 “Embedded Binaries” 一栏,点击 ‘+’ 符号,然后导入 sdk 文件夹下的 JCSDKOC.framework 和 lib 文件夹下的 libmtc.dylib、libzmf.dylib。 
- 导入 SDK 依赖的库 - 继续点击 ‘+’ 符号,导入如下系统依赖的库: - AudioToolbox.framework 
- VideoToolBox.framework 
- AVFoundation.framework 
- CFNetwork.framework 
- CoreMedia.framework 
- CoreVideo.framework 
 - 导入完后的效果如下图:   
- 设置路径 - 点击 ‘Build Settings’,找到 Search Paths,设置 Framework Search Paths 、Header Search Paths(头文件路径) 和 Library Search Paths(库文件路径): - Framework Search Paths:$(PROJECT_DIR)/../sdk 
- Header Search Paths:$(PROJECT_DIR)/../sdk/include 
- Library Search Paths:$(PROJECT_DIR)/../sdk/lib/ios 
 - 在完成第 1 步导入 JCSDKOC.framework 和两个 .dylib 文件后,Xcode 会自动生成该路径,如果 Xcode 没有自动生成路径,用户要根据 - JCSDKOC.framework、- include和- lib文件所在目录,手动设置路径。
- 设置 Enable Bitcode 为 NO - 进入工程中 Target -> Build Settings -> Enable Bitcode,将此项设置为 NO。 
- 设置 Other Linker Flags 的参数为 -ObjC - 点击 ‘Build Settings’,找到 Other Linker Flags 并添加参数 -ObjC。 
- 设置预处理宏定义 - 点击 ‘Build Settings’,找到 Preprocessor Macros,在右侧输入 ZPLATFORM=ZPLATFORM_OSX。 
添加项目权限
- 获取设备权限 - 若您的项目已启用 App Sandbox 或 Hardened Runtime 设置,则需勾选如下内容,获取相应的设备权限:     - 根据 Apple 官方要求: - 对于在 Mac App Store 发布的软件,需要启用 App Sandbox 设置。详见 Apple 官方声明。 
- 对于不在 Mac App Store 发布的软件,需要启用 Hardened Runtime 设置。详见 Apple 官方声明。 
- Hardened Runtime 设置中的 Library Validation 会阻止 app 加载框架、插件或库,除非框架、插件或库是由 Apple 或是与 app 相同的团队 ID 签名的。当遇到需要取消该安全限制的场景(例如无法枚举到第三方虚拟摄像头)时,请勾选 Hardened Runtime -> Runtime Exceptions -> Disable Library Validation。 
 
- 在工程的 info.plist 中添加如下键值: 
| Key | Type | Value | 
|---|---|---|
| Privacy - Microphone Usage Description | String | 使用麦克风的目的,如语音通话。 | 
| Privacy - Camera Usage Description | String | 使用摄像头的目的,如视频通话。 | 
