常见问题

更新时间:2023-04-13 09:35:16下载pdf

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

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

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

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

  • 方式一:

    // 1. 导入头文件
    #import <ThingNavigationController/ThingNavigationTopBarProtocol.h>
    // 2. 显示导航栏
    self.thing_topBarHidden = NO;
    self.thing_topBarAlpha = 1.0;
    // 3. 还原导航栏样式(例如:修改背景色)
    self.thing_topBarBackgroundImage = <#Image#>;
    // Or
    self.thing_topBarBackgroundColor = <#Color#>;
    
  • 方式二:

    // 1. 导入头文件
    #import <ThingNavigationController/ThingNavigationCallbackProtocol.h>
    // 2. 实现 ThingNavigationCallbackProtocol 提供的代理方法
    - (void)thing_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 (^)(ThingSmartHomeModel *homeModel))success
                         failure:(ThingFailureError)failure;

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

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

iOS 应用审核被拒绝,为什么提示 App 里包含 App Tracking Transparency 权限问题?

提审被拒绝示例:

Guideline 2.5.1 - Performance - Software Requirements

We noticed your app's binary contains references to App Tracking Transparency, but you have indicated you do not intend to ask users for permission to track at this time.

Since App Tracking Transparency is only intended to be used by apps requesting authorization to track, it would be appropriate to disable App Tracking Transparency before resubmitting your app for review.

若碰到 App Tracking Transparency、HealthKit、Siri 等相关权限问题,您需要将 UI 业务包升级到最新版本,再提审后正常上架。

Podfile 写法如下:

  • 方式一:
    pod 'ThingSmartXXXBizBundle', '~> 3.34.5'
    
  • 方式二:
    pod 'ThingSmartXXXBizBundle', '~> 4.0.0'