KalayRN(简中版)

RN版本


#项目导入指引

[TOC]

项目版本

Update: 2023/9/14

最新版本:

  • IOS 1.0.8
  • Android 1.0.7

![Kalay1.0 RN版](https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e04495d382933a1f81c4c0a8be848f4c&file=file.png "Kalay1.0 RN版")

导入指引

1. IOS项目导入指引

1.1 引入TUTK SDK

第一步:引入IOTCamera.framework

  • ReactNative工程iOS文件创建一个文件夹(例如:Lib),导入如下IOTCamera.framework依赖库,并添加到iOS项目中

第二步:在iOS工程项目中添加系统依赖库

第三步:添加ReactNative封装文件至Xcode项目中,进行调用

第四步:更新privateKey

  • 在APPdelegate.m文件中初始化代码添加如下:
// 自动唤醒
IOTC_WakeUp_Setup_Auto_WakeUp(1);
// 初始化Camera
Camera TK_InitIOTCWithLiceseKey:licenseKey privateKey:privateKey success:^{
       NSLog(@"初始化成功");
    } failure:^(NSError *error) {
       NSLog(@"error.code ===== %ld",(long)error.code);
       if (error.code == TUTK_ER_INVALID_ARG) {
           NSLog(@"TK_InitIOTC:false(TUTK_ER_INVALID_ARG)");
       }else if (error.code == TUTK_ER_INVALID_LICENSE_KEY) {
           NSLog(@"TK_InitIOTC:false(TUTK_ER_INVALID_LICENSE_KEY)");
       }else if (error.code == TUTK_ER_MEM_INSUFFICIENT) {
           NSLog(@"TK_InitIOTC:false(TUTK_ER_MEM_INSUFFICIENT)");
       }
}];

privateKey和licenseKey具体参数需要进行申请
NSString *privateKey = @"";
NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier];
if ([bundleID isEqualToString:@"com.xx.xx"]) {
    privateKey = @"xxxxx=";
}

第五步:安装项目依赖

  • 执行yarn install(yarn如果未安装需要安装yarn)

1.2 注意事项

1.2.1 更换SDK处理

1.  只需要替换当前图片中的.a文件即可,当前Lib文件是保存在iOS项目中 2.  替换完成之后,重新运行iOS项目即可

1.2.2 开启截图,开启录像,开启麦克风权限

1.  选择iOS项目,再info.plist文件, 点击第一行Information+图标按钮选择对应的权限

1.2.3 发送Command指令

1. 如果自定义Command,需要再RNIOTCameraCommand.h文件中,添加自定义的Command 1.  iOS原生中实现Command指令时间 2.  RN回调出去,Demo中有对应存在实例

1.2.4 CameraView播放器

1.  IOTCameraLiveViewManager 视图管理类给JS调用 2.  CommunicationModule Camera方法封装类,里面有Camera各种调用方法和回调

1.2.5 CamearCommand回调处理

1.  didReceiveIOCtrlWithType,这个是发送Cammand事件回调,设备回调给客户端的回调,可以在当前回调处理好数据,回调给RN,同样Demo中也给出了例子

1.2.6 更新配置文件,Xcode13及以上运行

> ReactNative版本为0.64.0,iOS开发工具为Xcode13以上则需要更新配置

方案一:

1.  Pod文件修改: use_flipper!({'Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1'})

2.  修改package.json 的ReactNative版本为'0.64.1'

3.  先删除node_modules及pod文件夹及podfile.lock

4.  安装则执行yarn install完成之后,接着进入ios文件夹,执行pod install –repo-update

5.  完成之后再添加PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin/node_modules/react-native/scripts/generate-specs.sh文件 如下图

  1. 完成上面直接运行Xcode等待编译

  2. 如果上面的方案编译不通过,查看当前电脑的Node版本是否过高,建议降低Node的版本,上面的方案编译通过Node版本为@14

  3. 真机调试则需要电脑和手机需要当前局域网!

1.3 参考文献

解决方案Xcode13方案资料: 解决Node无法找到方案资料:

2. Android项目导入指引

2.1 引用TUTK SDK

第一步:引入IOTCamera_2.5.0.23_release.aar

  • (该库包含P2P连线及音视频相关功能),和Module(AVIOCTRLDEF,TUTK的底层SDK),位置如下:

第二步:在build.gradle添加引入的库

  • 在app 的build.gradle的dependencies 添加
/ Kalay sdk / implementation project(path: ':AVIOCTRLDEF', configuration:'default') implementation(name: 'IOTCamera_2.5.1.8_release', ext: 'aar')

第三步:更新privateKey

  • 引入库之后,在java层建立CommunicationModule.java文件,并替换privatekey,该值与appid和licenseKey是一一对应关系

第四步:调用RN封装类

  • CommunicationModule.java是Camera方法封装类,里面有Camera各种调用方法和回调,该文件为引用IOTCamera的方法和react-natvie层的调用。
  • IOTCameraLiveViewManager.java 视图管理类给react-natvie层调用。

2.2 注意事项

2.2.1 更换SDK和T库

  • TUTK的SDK放在 AVIOCTRLDEF 的module,更换SDK版本时,只需要替换libs里面的so库,和在avioct里面的java文件就OK了。
  • 如需要更换带T库,比如 更换IOTC的带T库 System.loadLibrary("IOTCAPIs");改为System.loadLibrary("IOTCAPIsT");

2.2.2 申请privateKey

  • 每次启动需要初始化 ,Camera.TK_initIOTC的privatekey跟applicationId绑定一起,如有需要向TUTK申请

2.2.3 部分权限的开启

  • 开启截图,需要开启读写权限
  • 开启录像,需要开启读写权限和麦克风权限
  • 开启对讲需要开启麦克风权限

2.2.4 新增指令

  • 需要TK_registerIOTCListener注册回调,才会有回调产生
  • 如需添加新的命令,请在CommunicationModule的回调添加解析后抛给js

2.2.5 获取设备的Wifi列表

  • 解析方式在CommunicationModule的回调有例子;

2.2.6 事件回放

  • 调用RN_commandGetPlaybackWithChannel,例:调用RN_commandGetPlaybackWithChannel(mCameraChannel, AVIOCTRLDEFs.AVIOCTRL_RECORD_PLAY_START, 0, time),其中time是AVIOCTRLDEFs.STimeDay类,在事件列表获得 AVIOCTRLDEFs.AVIOCTRL_RECORD_PLAY_START是回放的命令,具体命令在RN_commandGetPlaybackWithChannel上有注释
  • 回放事件列表的获取解析EventInfo,可根据自己需求适当更改,或着自己重新定义一个类,在CommunicationModule的回调有例子

2.3 基于macOS平台开发项目

  • Java Development Kit: 建议使用Homebrew来安装由 Azul 提供的 名为 Zulu 的 OpenJDK 发行版。此发行版同时为 Intel 和 M1 芯片提供支持。在 M1 芯片架构的 Mac 上相比其他 JDK 在编译时有明显的性能优势。 brew tap homebrew/cask-versions brew install --cask zulu11

  • 配置 ANDROID_SDK_ROOT 环境变量: React Native 需要通过环境变量来了解你的 Android SDK 装在什么路径,从而正常进行编译。 具体的做法是把下面的命令加入到 shell 的配置文件中。如果你的 shell 是 zsh,则配置文件为~/.zshrc,如果是 bash 则为~/.bash_profile(可以使用echo $0命令查看你所使用的 shell。) 终端:open ~/.bash_profile

  • 如果你不是通过Android Studio安装的sdk,则其路径可能不同,请自行确定清楚 export ANDROID_SDK_ROOT=~/Library/Android/sdk(此为SDK安装路径) export PATH=$PATH:$ANDROID_SDK_ROOT/emulator export PATH=$PATH:$ANDROID_SDK_ROOT/tools export PATH=$PATH:$ANDROID_SDK_ROOT/tools/bin export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools

    source ~/.bash_profile 保存设置 译注:~表示用户目录,即/Users/你的用户名/

  • 导入项目在命令窗口下直接运行该命令 npm install  react-native start react-native run-android

页面列表

ITEM_HTML