更新时间:2023-07-13 07:14:39下载pdf
灯光场景是针对同一个家庭中的全部灯具进行场景设置的功能,帮助您打造丰富的面板色盘样式,支持多样的场景库,能快捷方便地设置家庭灯光场景。
灯光场景 UI 业务包支持的具体能力包括:
在工程的 Podfile
文件中添加灯光场景业务包组件,并执行 pod update
命令:
source 'https://github.com/tuya/tuya-private-specs.git'
source 'https://cdn.cocoapods.org/'
platform :ios, '11.0'
target 'your_target_name' do
# 添加灯光场景业务包
pod 'ThingSmartLightSceneBizBundle'
end
灯光场景业务包实现 ThingLightSceneProtocol
和 ThingLightSceneBizProtocol
以提供服务。
ThingLightSceneProtocol.h
协议文件内容为:
@class ThingLightSceneModel;
@protocol ThingLightSceneProtocol <NSObject>
/// 跳转至「创建灯光场景页」
- (void)createNewLightScene;
/// 跳转至「编辑灯光场景页」
- (void)editLightScene:(ThingLightSceneModel *)scene;
@end
ThingLightSceneBizProtocol.h
协议文件内容为:
@class ThingLightSceneModel;
@protocol ThingLightSceneBizProtocol <NSObject>
@optional
/// 执行灯光场景
- (void)executeLightScene:(ThingLightSceneModel *)sceneModel
success:(void(^)(BOOL success))success
failure:(void(^)(NSError * _Nonnull error))failure;
/// 获取灯光场景列表
- (void)getLightSceneListWithSuccess:(void(^)(NSArray<ThingLightSceneModel *> * _Nonnull scenes))success
failure:(void(^)(NSError * _Nonnull error))failure;
@end
调用灯光场景业务包之前,您需要实现以下协议:
协议一:ThingFamilyProtocol
提供灯光场景组件所需的当前家庭 ID。
/// 返回当前家庭 ID
- (long long)currentFamilyId;
如果同时引入了家庭业务包和场景业务包,使用方法请参考 家庭管理 UI 业务包。
协议二(已废弃):ThingSmartHomeDataProtocol
提供灯光场景组件所需的当前家庭信息。
建议实现 ThingFamilyProtocol
协议方法来提供当前家庭 ID。
/**
查询当前的家庭,当前没有家庭的时候,返回 nil。
@return ThingSmartHome
*/
- (ThingSmartHome *)getCurrentHome;
协议三:ThingSmartHouseIndexProtocol
提供场景组件所需的管理员身份信息。如果非管理员也允许编辑场景,返回 YES
即可。
/**
* 是否是当前家庭的管理员。
*
* @return YES 代表是管理员
*/
- (BOOL)homeAdminValidation;
任何接口调用之前,务必确认用户已登录。
调用场景业务包逻辑前,要先实现:
ThingFamilyProtocol
中的协议方法 currentFamilyId
。ThingSmartHouseIndexProtocol
中的协议方法 homeAdminValidation
。#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingModuleServices.h>
#import <ThingSmartDeviceKit/ThingSmartDeviceKit.h>
- (void)registerProtocol {
// 注册要实现的协议
[[ThingSmartBizCore sharedInstance] registerService:@protocol(ThingSmartHomeDataProtocol) withInstance:self];
[[ThingSmartBizCore sharedInstance] registerService:@protocol(ThingSmartHouseIndexProtocol) withInstance:self];
[[ThingSmartBizCore sharedInstance] registerService:@protocol(ThingFamilyProtocol) withInstance:self];
}
// 实现对应的协议方法
- (ThingSmartHome *)getCurrentHome {
ThingSmartHome *home = [ThingSmartHome homeWithHomeId:@"当前家庭 ID"];
return home;
}
- (BOOL)homeAdminValidation {
//可根据实际用户身份返回,也可直接返回 YES 允许所有用户编辑
return YES;
}
/// 返回当前家庭 ID
- (long long)currentFamilyId {
return [ThingDemoSmartHomeManager sharedInstance].currentHomeModel.homeId;
}
#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingLightSceneProtocol.h>
- (void)addLightScene {
id<ThingLightSceneProtocol> impl = [[ThingSmartBizCore sharedInstance] serviceOfProtocol:@protocol(ThingLightSceneProtocol)];
[impl createNewLightScene];
}
#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingLightSceneProtocol.h>
#import <ThingLightSceneKit/ThingLightSceneModel.h>
- (void)editLightScene:(ThingLightSceneModel *)scene {
id<ThingLightSceneProtocol> impl = [[ThingSmartBizCore sharedInstance] serviceOfProtocol:@protocol(ThingLightSceneProtocol)];
[impl editLightScene:scene];
}
#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingLightSceneBizProtocol.h>
- (void)getLightSceneList {
id<ThingLightSceneBizProtocol> impl = [[ThingSmartBizCore sharedInstance] serviceOfProtocol:@protocol(ThingLightSceneBizProtocol)];
[impl getAllLightSceneListWithSuccess:^(NSArray<ThingLightSceneModel *> * _Nonnull scenes) {
} failure:^(NSError * _Nonnull error) {
}];
}
#import <ThingSmartBizCore/ThingSmartBizCore.h>
#import <ThingModuleServices/ThingLightSceneBizProtocol.h>
- (void)executeLightScene:(ThingLightSceneModel *)scene {
ThingLightSceneModel *sceneModel = self.sceneList[indexPath.row];
id<ThingLightSceneBizProtocol> impl = [[ThingSmartBizCore sharedInstance] serviceOfProtocol:@protocol(ThingLightSceneBizProtocol)];
[impl executeLightScene:scene success:^(BOOL success) {
} failure:^(NSError * _Nonnull error) {
}];
}
建议在以下事件中发送通知(kNotificationLightSceneListUpdate
):
// 监听到灯光场景变化,通知刷新列表
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadSceneList) name:@"kNotificationLightSceneListUpdate" object:nil];
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈