简体中文
简体中文
English
联系我们
注册
登录
layout空间导航

H5 商城 UI 业务包

更新时间:2022-03-02 09:48:19下载pdf

涂鸦 H5 商城 UI 业务包提供了承载 App 商城 的 iOS 容器,让您的 IoT App 具备丰富的商城能力,让移动端流量通过商城变现。App 商城 是嵌入在 App 的全球电商平台,详情请访问 涂鸦商城

接入组件

在工程的 Podfile 文件中添加商城业务包组件,并执行 pod update 命令:

source "https://github.com/TuyaInc/TuyaPublicSpecs.git"
source 'https://cdn.cocoapods.org/'

target 'your_target_name' do
  # TuyaSmart SDK
  pod "TuyaSmartHomeKit"
  # 添加 H5 商城业务包
  pod 'TuyaSmartMallBizBundle', '~> 3.22.0'
end

服务协议

提供服务

H5 商城 UI 业务包实现 TYMallProtocol 协议以提供服务,在 TYModuleServices 组件中查看 TYMallProtocol.h 协议文件内容为:

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, TYMallPageType) {
    TYMallPageTypeHome,      // Mall home page
    TYMallPageTypeOrders,    // Mall orders page
};

@protocol TYMallProtocol <NSObject>

/**
 * Check if mall enable for current logged user.
 * You should check this every time after logged user changed.
 */
- (void)checkIfMallEnableForCurrentUser:(void(^)(BOOL enable, NSError *error))callback;

/**
 * Request special mall page with `TYMallPageType`
 * You should replace mall page every time after logged user changed.
 * @param pageType Mall page type
 */
- (void)requestMallPage:(TYMallPageType)pageType completionBlock:(void(^)(__kindof UIViewController *page, NSError *error))callback;

@end

依赖服务

无。

使用指南

注意事项

  1. 调用任何接口之前,务必确认用户已登录。
  2. 获取商城页面之前,请提前确认用户所注册的服务区是否开通商城服务。商城与用户信息强相关。
  3. 登录用户发生变化时,务必重新判断商城可用状态并重新获取商城页面。
  4. 获取商城页面为 UIViewController,请使用 UINavigationController 进行 pushpresent 展示。
  5. 商城页面依赖导航控制器,且会设置导航栏内容。因此,需要导航控制器进行包装。

查询可用状态

Objective-C 示例

#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYMallProtocol.h>

id<TYMallProtocol> mallImpl = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYMallProtocol)];
[mallImpl checkIfMallEnableForCurrentUser:^(BOOL enable, NSError *error) {
  if (error) {
    // 查询失败时返回 error
    NSLog(@"%@",error);
  } else {
    // enable 为 true 则商城可用,否则不可用
    NSLog(@"%@",@(enable));
  }
}];

Swift 示例

let mallImpl = TuyaSmartBizCore.sharedInstance().service(of: TYMallProtocol.self)
(mallImpl as? TYMallProtocol)?.checkIfMallEnable(forCurrentUser: { (enable, error) in
    if let e = error {
        print("\(e)")
        return
    }
    print("\(enable)")
})

获取商城页面(UIViewController

目前提供以下两个页面:

  • 商城首页:TYMallPageTypeHome
  • 商城订单页:TYMallPageTypeOrders

接入时,您可以根据需要获取对应页面来展示。

Objective-C 示例

#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYMallProtocol.h>

id<TYMallProtocol> mallImpl = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYMallProtocol)];
[impl requestMallPage:TYMallPageTypeHome completionBlock:^(__kindof UIViewController *page, NSError *error) {
    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:page];
    [self presentViewController:nav animated:YES completion:nil];
}];

Swift 示例

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