高级功能 UI 业务包

更新时间:2024-10-21 05:48:26下载pdf

高级功能 UI 业务包提供了承载 App 高级功能 增值服务的 iOS 容器。目前,支持的高级功能类型如下所示:

集成业务包

在工程的 Podfile 文件中添加 App 高级功能业务包组件,并执行 pod update 命令:

source "https://github.com/tuya/tuya-pod-specs"
source 'https://cdn.cocoapods.org/'
platform :ios, '11.0'

target 'your_target_name' do
  # 添加 App 高级功能业务包
  pod 'ThingAdvancedFunctionsBizBundle'
end

服务协议

提供服务

App 高级功能业务包实现 ThingPersonalServiceProtocol 协议以提供服务,在 ThingModuleServices 组件中查看 ThingPersonalServiceProtocol.h 协议文件内容为:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

typedef NS_ENUM(NSUInteger, ThingPersonalServiceType) {
    ThingPersonalServiceTypePushCall, // 电话通知
    ThingPersonalServiceTypePushSMS,  // 短信通知
    ThingPersonalServiceTypeIpcCloudStorage, // 云存储
    ThingPersonalServiceTypeIpcOrderList //订单页面
};

@protocol ThingPersonalServiceProtocol <NSObject>

/**
* 获取增值服务页面
*
* @param type 增值服务类型
* @param callback 该 block 应该包含一个 UIViewController 类型的参数和一个 NSError 类型的参数
*/
- (void)requestPersonalService:(ThingPersonalServiceType)type completionBlock:(void(^)(__kindof UIViewController *page, NSError *error))callback;
@end

依赖服务

由于电话和短信服务依赖家庭信息,需要在 podfile 中引入家庭业务包。

pod 'ThingSmartFamilyBizBundle'

使用指南

注意事项

  • 调用任何接口之前,务必确认用户已登录。
  • 获取高级功能页面之前,请提前确认用户所注册的服务地区是否开通高级功能服务。相关服务与用户信息强相关。
  • 获取高级功能页面为 UIViewController,请使用 UINavigationController 进行 pushpresent 展示。
  • 高级功能页面依赖导航控制器,且会设置导航栏内容。因此,需要导航控制器进行包装。

获取高级功能页面(UIViewController

目前提供以下高级功能页面:

  • 电话通知页:ThingPersonalServiceTypePushCall
  • 短信通知页:ThingPersonalServiceTypePushSMS
  • 云存储页:ThingPersonalServiceTypeIpcCloudStorage
  • 订单页:ThingPersonalServiceTypeIpcOrderList

接入时,您可以根据需要获取并展示对应页面。因为后续还需要重新展示新的页面,所以必须包装 NavigationController,否则,会导致后续页面无法跳转。

#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingPersonalServiceProtocol.h>

id<ThingPersonalServiceProtocol> psImpl = [[ThingSmartBizCore sharedInstance] serviceOfProtocol:@protocol(ThingPersonalServiceProtocol)];
[self requestPersonalService:ThingPersonalServiceTypePushSMS completionBlock:^(__kindof UIViewController *page, NSError *error) {
  if (error) {
    NSLog(@"%@",error);
  } else {
    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:page];
    [self presentViewController:nav animated:YES completion:nil];
  }
}];

Swift 示例

let psImpl = ThingSmartBizCore.sharedInstance().service(of: ThingPersonalServiceProtocol.self)
(psImpl as? ThingPersonalServiceProtocol)?.request(.home, completionBlock: { (psVc, error) in
    if let e = error {
        print("\(e)")
        return
    }
    // push
    yourNaviController.pushViewController(psVc!, animated: true)
    // present
    let naviVc = UINavigationController.init(rootViewController: psVc!)
    yourViewController.present(naviVc, animated: true, completion: nil)
})