本章将介绍如何将 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 |
使用摄像头的目的,如视频通话。 |