快速集成 iOS 版 IPC SDK

更新时间:2024-06-05 06:32:02下载pdf

IPC SDK 依赖 Cube App SDK 中用户管理、设备配网、家庭管理、设备管理等部分,在此基础上实现了智能摄像机设备的功能。因此,您需要先集成 Cube App SDK,集成 或者 更新 IPC SDK 前请认真阅读 Cube App SDK 快速集成

IPC SDK 最低支持 11.0 版本 iOS 系统。开发 App 时,IPC 设备不支持云开发方案,您需要同时使用 IPC SDK 和 Cube App SDK。

模块说明

模块 说明
ThingSmartCameraKit 摄像机垂直化功能 SDK

ThingSmartCameraKit 不只是一个单独的库,还会依赖到其他基础功能支撑的库,详情请参考 SDK 架构

设置环境

集成 SDK

Cube App SDK 2.0.0 版本进行安全升级,请您务必先下载 App 专属安全 SDK

Podfile 文件中添加以下内容:

source 'https://github.com/tuya/tuya-pod-specs.git'
platform :ios, '11.0'

target 'your_target_name' do
  # 从涂鸦开发者平台(https://platform.tuya.com)构建和获取 ThingSmartCryption
  # 购买正式版后,需重新在涂鸦开发者平台构建 SDK 并重新集成
  # ./ 代表将 ios_core_sdk.tar.gz 解压之后所在目录与 podfile 同级
  # 若自定义存放目录,可以修改 path 为自定义目录层级
  pod "ThingSmartCryption", :path =>'./'
  pod "ThingSmartCameraKit"
end

IPC SDK 默认不支持 P2P 1.0 的设备,即 p2pType 取值为 1 的设备。如果需要使用,请联系您的涂鸦客户经理。

设置权限

IPC SDK 需要使用相册访问权限和麦克风使用权限,请确保您的项目 info.plist 文件中添加了以下权限使用说明。否则在录制视频、截图、或者视频对讲时,会造成 App 崩溃。

// 需要在 info.plist 文件中添加以下权限
Privacy - Microphone Usage Description
Privacy - Photo Library Additions Usage Description

初始化 SDK

  1. 根据 Target > General 打开项目设置,修改 Bundle Identifier 为您在 涂鸦开发者平台 上注册的 App 对应的 iOS 包名。

  2. 在项目的 PrefixHeader.pch 文件添加以下内容(Swift 项目可以添加在 xxx_Bridging-Header.h 桥接文件中)。

    #import <ThingSmartBaseKit/ThingSmartBaseKit.h>
    #import <ThingSmartCameraKit/ThingSmartCameraKit.h>
    
  3. 打开 AppDelegate.m 文件,在 [AppDelegate application:didFinishLaunchingWithOptions:] 方法中,使用在涂鸦开发者平台上 App 对应的 App KeyApp Secret初始化 SDK

    • Objective-C:

      [[ThingSmartSDK sharedInstance] startWithAppKey:<#your_app_key#><#your_app_key#> secretKey:<#your_secret_key#>];
      
    • Swift:

      ThingSmartSDK.sharedInstance()?.start(withAppKey: <#your_app_key#>, secretKey: <#your_secret_key#>)
      

至此,IPC SDK 已经成功激活,您可以开始 App 开发了。

适配 Main 函数

视频出流成功后,将 App 退到后台,停留一段时间再回前台,可能会造成 App 崩溃,错误原因为 Terminated due to signal 13。为了防止该崩溃的发生,请在项目中添加以下代码:

  • Objective-C:main.m

    int main(int argc, char * argv[]) {
        @autoreleasepool {
    
            struct sigaction sa;
            sa.sa_handler = SIG_IGN;
            sigemptyset(&sa.sa_mask);
            sa.sa_flags = 0;
    
            if (sigaction(SIGPIPE, &sa, NULL) < 0) {
                perror("cannot ignore SIGPIPE");
                return -1;
            }
    
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    
  • Swift:AppDelegate.swift

    let handler: @convention(c) (Int32) -> () = { sig in
            // handle the signal somehow
            print("error", sig)
        }
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
    
            signal(SIGPIPE, handler)
            return true
        }
    

开启 Debug 模式

在开发的过程中可以开启 Debug 模式,打印一些日志用于分析问题。

  • Objective-C:

    #ifdef DEBUG
        [[ThingSmartSDK sharedInstance] setDebugMode:YES];
        [[ThingSmartCameraSDK sharedInstance] setDebugMode:YES];
    #else
    #endif
    
  • Swift:

    #if DEBUG
    ThingSmartSDK.sharedInstance()?.debugMode = true
    ThingSmartCameraSDK.sharedInstance()?.debugMode = true
    #else
    #endif
    

    在开发过程中,涂鸦建议您使用真机调试。如果使用模拟器调试,可能导致部分功能无法正常使用。

运行 Demo App

Cube App SDK Demo App 包含 IPC 功能,直接参考 App SDK Demo App 配置 的配置方法,将 BundleIdAppKeyAppSecret 配置正确。

IPC App SDK 示例工程 Demo 仅用于演示体验,请勿直接商用。更多详情,请访问 《涂鸦开发服务协议》

Demo App 具有以下 IPC 相关功能:

  • 直播页面:IPC 设备的 P2P 连接流程,包含实时视频播放,视频录制、截图、对讲等功能。

  • 回放页面:设备存储卡中视频片段的获取与播放,时间轴组件的使用。

  • 云存储页面:云存储服务的开通、状态判断、云存储视频和云存储事件的获取与播放。

  • 消息页面:告警事件的获取与展示。

  • 设置页面:IPC 标准设备功能的使用。

    快速集成 iOS 版 IPC SDK 快速集成 iOS 版 IPC SDK 快速集成 iOS 版 IPC SDK快速集成 iOS 版 IPC SDK