FAQ

更新时间:2023-05-22 06:38:30下载pdf

为什么调用 Push 方式跳转面板之后,其他视图控制器的导航栏样式变了?

设备控制 UI 业务包 本质是提供一个视图控制器来加载 RN(React-Native)渲染的界面,所以该视图控制器内部将导航栏进行了相关的隐藏处理,主要是改变了透明度。

因此在使用 push 方式进入面板控制器之后,pop 回自身控制器时,需要将样式还原。主要原因是,iOS 提供的 push 和 pop 动画是使用 NavigationController 来管理的,其中使用的 NavigationBar 是唯一的。在 NavigationControllerStack 存储结构下,每当 Stack 中的 ViewController 修改了导航栏,势必会影响其他 ViewController 展示的效果)。

建议采用以下两种样式进行还原:

  • 方式一:

    // 1. 导入头文件
    #import <TYNavigationController/TYNavigationTopBarProtocol.h>
    // 2. 显示导航栏
    self.ty_topBarHidden = NO;
    self.ty_topBarAlpha = 1.0;
    // 3. 还原导航栏样式(例如:修改背景色)
    self.ty_topBarBackgroundImage = <#Image#>;
    // Or
    self.ty_topBarBackgroundColor = <#Color#>;
    
  • 方式二:

    // 1. 导入头文件
    #import <TYNavigationController/TYNavigationCallbackProtocol.h>
    // 2. 实现 TYNavigationCallbackProtocol 提供的代理方法
    - (void)ty_naviTransitioning:(id<UIViewControllerTransitionCoordinatorContext>)context {
        // 3. 显示导航栏
        [self.navigationController setNavigationBarHidden:false animated:true];
        // 4. 还原导航栏样式(例如:修改背景色)
        [self.navigationController.navigationBar setBarTintColor:<#Color#>];
        // Or
        [self.navigationController.navigationBar setBackgroundImage:<#Image#> forBarMetrics:UIBarMetricsDefault];
    }
    

加载依赖插件的时候,为什么 pod update 报错?

在使用 Cocoapods 为工程集成业务包时,由于 pod 的逻辑,Podfile 中没有指明每个 Pod 库的版本时,默认会集成最新的正式版本号,格式为 x.y.z,其中 x、y、z 均为数字。

若需要依赖 设备控制 UI 业务包 的扩展功能时,即需要依赖相关插件,由于插件的版本号属于预发布版本(pre-release),因此,需要在 Podfile 中指明设备控制 UI 业务包的所在基线的最新日期标明的版本号。查看业务包版本号,请参考 版本记录

进入面板时,弹框为什么提示“当前版本不支持该设备,请升级 App”?

在调用进入 设备详情 UI 业务包 的接口前,请确认已提前查询过设备信息,即成功调用过 智能生活 App SDK 中的以下方法:

/**
 *  After init home, need to get home details
 *  初始化 home 对象之后需要获取家庭的详情,homeModel,roomList,deviceList,groupList 才有数据
 *
 *  @param success     Success block
 *  @param failure     Failure block
 */
- (void)getHomeDetailWithSuccess:(void (^)(TuyaSmartHomeModel *homeModel))success
                         failure:(TYFailureError)failure;

若后续仍然出现该提示,有以下四种可能:

  • 当前 SDK 支持的 MQTT 通信协议低于硬件的通信协议,即 deviceModel.pv 小于 TUYA_CURRENT_GW_PROTOCOL_VERSION
  • 当前 SDK 支持的局域网通信协议低于硬件的通信协议,即 deviceModel.lpv 小于 TUYA_CURRENT_LAN_PROTOCOL_VERSION
  • 设备面板 UI 包不支持当前的版本,即 deviceModel.rnFindfalse
  • 面板未找到合适的视图控制器