简介
@longzy/react-native-sdk 是基座提供的基础能力的typescript-sdk
包装。
使用
bash
yarn add @longzy/react-native-sdk
导入
ts
import LRNSDK from '@longzy/react-native-sdk'
API
version
ts
LRNSDK.version
container
获取容器信息
获取容器信息
ts
getContainerInfo(): Promise<LRNContainer | null>;
app
获取原生App提供的信息
获取APP信息
ts
getAppInfo(): Promise<LRNApp | null>;
获取用户信息
ts
getUserInfo(): Promise<LRNUser | null>;
获取宠物列表
ts
getPetList(): Promise<LRNPet[] | null>;
获取产品列表
ts
getProductList(): Promise<LRNProduct[] | null>;
device
获取原生App提供设备信息
获取设备列表
ts
getDeviceList(): Promise<LRNDevice[] | null>;
native
获取原生App提供的能力
退出(销毁)当前容器
ts
exit(): Promise<void>;
容器内跳转
ts
/**
* 跳转原生页面|其他容器
*
* @param url 面板类型
* @param options
* 1. 跳转参数 参数会被原样传入lrn应用内props, AppRegistry.registerComponent(appName, () => function (props) {});
* 2. 涂鸦设备类型面板, 必须传入 devId
* 3. wo+平台设备面板, 必须传入 devId, productId
*/
go(url: string | BuiltInRoute, options?: Record<string, any>): Promise<void>;
eg:
ts
// 跳转到涂鸦设备面板
LRNSDK.native.go(BuiltInRoute.TUYA, { devId: '12333'})
ts
// 跳转到wo+平台设备面板
LRNSDK.native.go(BuiltInRoute.DEVICE, { devId: '12333', productId: '12333'})
重新加载当前容器
ts
reload(): Promise<void>;
设置是否允许手势返回 (ios only)
ts
enablePopGesture(enable: boolean): Promise<boolean>;
获取是否允许手势返回 (ios only)
ts
popGestureState(): Promise<boolean>;
关闭启动页
建议首页渲染完成后调用, 可避免白屏
ts
dismissSplash(): Promise<void>;
事件
订阅Native事件
订阅事件
ts
/**
* 订阅事件
*
* @param eventType
* @param listener
* @param context
* @returns
*/
on(eventType: EventType, listener: (...args: any[]) => any, context?: any): EmitterSubscription;
/**
* 订阅事件
* @param eventType
* @param listener
* @param context
* @returns
*/
once(eventType: EventType, listener: (...args: any[]) => any, context?: any): EmitterSubscription;
取消订阅
ts
/**
* 取消订阅
*
* @param eventType
* @param listener
*/
off(eventType: EventType, listener: (...args: any[]) => any): void;
/**
* 取消所有订阅
*
*/
offAll(eventType: EventType): void;
发送事件
ts
/**
* 发送事件
*
* @param eventType
* @param params
*/
emit(eventType: EventType, ...params: any[]): void;
原生模块
调用原生模块
TIP
请跳转至 原生模块文档 了解更多原生模块使用方法
类型定义
类型定义
BuiltInRoute
ts
/**
* 内置路由
*/
export declare enum BuiltInRoute {
/**
* App首页
*/
HOME = "lrnhome",
/**
* 登录页面
*/
LOGIN = "lrnlogin",
/**
* 原生WebView
*/
WEBVIEW = "lrnwebview",
/**
* 问题反馈
*/
FEEDBACK = "lrnfeedback",
/**
* 消息中心
*/
MSG_CENTER = "lrnmsgcenter",
/**
* 帮助中心
*/
HELP = "lrnhelp",
/**
* 宠物中心
*/
PET = "lrnpet",
/**
* 在线商城
*/
MALL = "lrnmall",
/**
* 设备面板
*/
DEVICE = "lrndevice",
/**
* 涂鸦设备面板
*/
TUYA = "lrntuya"
}
EventType
ts
export declare enum EventType {
/**
* 全局事件
*/
COMMON = "LRN:CommonEvent",
/**
* 用户信息变更
*/
USER = "LRN:UserEvent",
/**
* 设备信息变更
*
*/
DEVICE = "LRN:DeviceEvent",
/**
* 宠物信息变更
*
*/
PET = "LRN:PetEvent",
/**
* 消息变更
*/
MESSAGE = "LRN:MessageEvent",
/**
* 网络信息变更
*
*/
NETWORK = "LRN:NetworkEvent",
/**
* 当前容器消息
*/
EVENT = "LRN:Event"
}
LRNContainer
ts
export type LRNContainer = {
/**
* 基座版本
*/
frameworkVersion: string;
/**
* app唯一标识
*/
appKey?: string;
/**
* App唯一名称
*/
appId?: string;
/**
* App版本 (非原生App版本)
*/
appVersion?: string;
/**
* App构建时间
*/
buildTime?: string;
/**
* 最后提交ID
*/
lastCommitId?: string;
/**
* react native 版本
*/
rnVersion?: string;
};
LRNApp
ts
export type LRNApp = {
apiUrl?: string;
source: 'UNKNOWN' | 'WOPET' | 'WOVISION';
language?: string;
};
LRNUser
ts
export type LRNUser = {
uid?: string;
iotUid?: string;
userName?: string;
nickName?: string;
email?: string;
mobile?: string;
avatar?: string;
token?: string;
iotToken?: string;
homeId: number;
};
LRNPet
ts
export type LRNPet = {
id: string;
name: string;
pic: string;
weight: string;
breed: string;
birthday: number;
gender: string;
zodiac: number;
};
LRNProduct
ts
export type LRNProduct = {
pid: string;
name: string;
icon: string;
sale: string;
capability: number;
attribute: number;
sort: number;
};
LRNDevice
ts
export type LRNDevice = {
deviceType: 'SELF' | 'TUYA';
devId: string;
name: string;
iconUrl: string;
ability: number;
isOnline: boolean;
isCloudOnline: boolean;
isYuOnline: boolean;
isShare: boolean;
productId: string;
localKey: string;
secKey: string;
uuid: string;
mac: string;
capability: number;
timezoneId: string;
homeId: number;
roomId: number;
sharedTime: number;
ip: string;
};