跳到主要内容

设备设置(TSSetting)

TSSetting 模块提供了设备设置管理功能,支持设备佩戴习惯、蓝牙断连震动、运动目标提醒、来电响铃、抬腕亮屏、勿扰模式、加强监测等多项设置操作。所有设置均会持久化保存在设备中,关机后仍然保留。

前提条件

  1. 设备已成功配对并连接
  2. 已获得必要的系统权限(如通话权限、蓝牙权限等)
  3. 蓝牙连接处于稳定状态

数据模型

TSWristWakeUpModel(抬腕亮屏设置模型)

属性名类型说明
isEnableBOOL抬腕亮屏功能是否启用
startTimeNSInteger功能开始生效时间(从0点开始的分钟数,0-1439)
endTimeNSInteger功能结束生效时间(从0点开始的分钟数,0-1439)

TSDoNotDisturbModel(勿扰模式配置模型)

属性名类型说明
isEnabledBOOL勿扰模式是否启用
isTimePeriodModeBOOL是否为时段模式(YES:时段模式,NO:全天模式)
startTimeNSInteger勿扰模式开始时间(从0点开始的分钟数,0-1440,时段模式时有效)
endTimeNSInteger勿扰模式结束时间(从0点开始的分钟数,0-1440,时段模式时有效)

枚举与常量

TSWearingHabit(设备佩戴习惯)

枚举值说明
TSWearingHabitLeft左手佩戴,值为 0
TSWearingHabitRight右手佩戴,值为 1

回调类型

回调类型说明
TSCompletionBlock标准完成回调,参数为 (BOOL success, NSError * _Nullable error)
void (^)(TSWearingHabit habit, NSError * _Nullable error)佩戴习惯获取回调
void (^)(BOOL enabled, NSError * _Nullable error)布尔值状态获取回调
void (^)(TSWristWakeUpModel * _Nullable model, NSError * _Nullable error)抬腕亮屏设置获取回调
void (^)(TSDoNotDisturbModel * _Nullable model, NSError * _Nullable error)勿扰模式设置获取回调

接口方法

设置设备佩戴习惯

- (void)setWearingHabit:(TSWearingHabit)habit
completion:(TSCompletionBlock)completion;

参数说明

参数名类型说明
habitTSWearingHabit佩戴习惯(TSWearingHabitLeft 或 TSWearingHabitRight)
completionTSCompletionBlock完成回调,success 表示设置是否成功,error 为错误信息

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface setWearingHabit:TSWearingHabitRight
completion:^(BOOL success, NSError * _Nullable error) {
if (success) {
TSLog(@"设置佩戴习惯成功");
} else {
TSLog(@"设置佩戴习惯失败: %@", error.localizedDescription);
}
}];

获取当前佩戴习惯

- (void)getCurrentWearingHabit:(void(^)(TSWearingHabit habit, NSError * _Nullable error))completion;

参数说明

参数名类型说明
completionvoid (^)(TSWearingHabit, NSError *)完成回调,返回当前佩戴习惯和错误信息

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface getCurrentWearingHabit:^(TSWearingHabit habit, NSError * _Nullable error) {
if (!error) {
NSString *habitStr = (habit == TSWearingHabitLeft) ? @"左手" : @"右手";
TSLog(@"当前佩戴习惯: %@", habitStr);
} else {
TSLog(@"获取佩戴习惯失败: %@", error.localizedDescription);
}
}];

设置蓝牙断连震动

- (void)setBluetoothDisconnectionVibration:(BOOL)enabled
completion:(TSCompletionBlock)completion;

参数说明

参数名类型说明
enabledBOOL是否启用蓝牙断连震动(YES 启用,NO 禁用)
completionTSCompletionBlock完成回调,success 表示设置是否成功

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface setBluetoothDisconnectionVibration:YES
completion:^(BOOL success, NSError * _Nullable error) {
if (success) {
TSLog(@"蓝牙断连震动已启用");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

获取蓝牙断连震动状态

- (void)getBluetoothDisconnectionVibrationStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;

参数说明

参数名类型说明
completionvoid (^)(BOOL, NSError *)完成回调,enabled 表示是否启用,error 为错误信息

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface getBluetoothDisconnectionVibrationStatus:^(BOOL enabled, NSError * _Nullable error) {
if (!error) {
TSLog(@"蓝牙断连震动状态: %@", enabled ? @"启用" : @"禁用");
} else {
TSLog(@"获取状态失败: %@", error.localizedDescription);
}
}];

设置运动目标达成提醒

- (void)setExerciseGoalReminder:(BOOL)enabled
completion:(TSCompletionBlock)completion;

参数说明

参数名类型说明
enabledBOOL是否启用运动目标提醒(YES 启用,NO 禁用)
completionTSCompletionBlock完成回调,success 表示设置是否成功

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface setExerciseGoalReminder:YES
completion:^(BOOL success, NSError * _Nullable error) {
if (success) {
TSLog(@"运动目标提醒已启用");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

获取运动目标提醒状态

- (void)getExerciseGoalReminderStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;

参数说明

参数名类型说明
completionvoid (^)(BOOL, NSError *)完成回调,enabled 表示是否启用

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface getExerciseGoalReminderStatus:^(BOOL enabled, NSError * _Nullable error) {
if (!error) {
TSLog(@"运动目标提醒状态: %@", enabled ? @"启用" : @"禁用");
} else {
TSLog(@"获取状态失败: %@", error.localizedDescription);
}
}];

设置来电响铃

- (void)setCallRing:(BOOL)enabled
completion:(TSCompletionBlock)completion;

参数说明

参数名类型说明
enabledBOOL是否启用来电响铃(YES 启用,NO 禁用)
completionTSCompletionBlock完成回调,success 表示设置是否成功

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface setCallRing:YES
completion:^(BOOL success, NSError * _Nullable error) {
if (success) {
TSLog(@"来电响铃已启用");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

获取来电响铃状态

- (void)getCallRingStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;

参数说明

参数名类型说明
completionvoid (^)(BOOL, NSError *)完成回调,enabled 表示是否启用

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface getCallRingStatus:^(BOOL enabled, NSError * _Nullable error) {
if (!error) {
TSLog(@"来电响铃状态: %@", enabled ? @"启用" : @"禁用");
} else {
TSLog(@"获取状态失败: %@", error.localizedDescription);
}
}];

设置抬腕亮屏

- (void)setRaiseWristToWake:(TSWristWakeUpModel *)model
completion:(TSCompletionBlock)completion;

参数说明

参数名类型说明
modelTSWristWakeUpModel *包含抬腕亮屏设置的模型对象
completionTSCompletionBlock完成回调,success 表示设置是否成功

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

TSWristWakeUpModel *model = [[TSWristWakeUpModel alloc] init];
model.isEnable = YES;
model.startTime = 480; // 8:00 AM
model.endTime = 1320; // 10:00 PM

[settingInterface setRaiseWristToWake:model
completion:^(BOOL success, NSError * _Nullable error) {
if (success) {
TSLog(@"抬腕亮屏设置成功");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

获取抬腕亮屏设置

- (void)getRaiseWristToWakeStatus:(void(^)(TSWristWakeUpModel * _Nullable model, 
NSError * _Nullable error))completion;

参数说明

参数名类型说明
completionvoid (^)(TSWristWakeUpModel *, NSError *)完成回调,model 为设置信息

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface getRaiseWristToWakeStatus:^(TSWristWakeUpModel * _Nullable model,
NSError * _Nullable error) {
if (!error && model) {
TSLog(@"抬腕亮屏状态: %@", model.isEnable ? @"启用" : @"禁用");
TSLog(@"开始时间: %ld, 结束时间: %ld", (long)model.startTime, (long)model.endTime);
} else {
TSLog(@"获取设置失败: %@", error.localizedDescription);
}
}];

注册抬腕亮屏配置变化监听

- (void)registerRaiseWristToWakeDidChanged:(void(^)(TSWristWakeUpModel * _Nullable model,
NSError * _Nullable error))didChangeBlock;

参数说明

参数名类型说明
didChangeBlockvoid (^)(TSWristWakeUpModel *, NSError *)配置变化时的回调

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface registerRaiseWristToWakeDidChanged:^(TSWristWakeUpModel * _Nullable model,
NSError * _Nullable error) {
if (!error && model) {
TSLog(@"抬腕亮屏配置已更新");
TSLog(@"启用状态: %@", model.isEnable ? @"是" : @"否");
TSLog(@"时间范围: %ld - %ld", (long)model.startTime, (long)model.endTime);
} else {
TSLog(@"配置更新通知失败: %@", error.localizedDescription);
}
}];

设置勿扰模式

- (void)setDoNotDisturb:(TSDoNotDisturbModel *)model
completion:(TSCompletionBlock)completion;

参数说明

参数名类型说明
modelTSDoNotDisturbModel *包含勿扰模式设置的模型对象
completionTSCompletionBlock完成回调,success 表示设置是否成功

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

TSDoNotDisturbModel *model = [[TSDoNotDisturbModel alloc] init];
model.isEnabled = YES;
model.isTimePeriodMode = YES;
model.startTime = 720; // 12:00 PM
model.endTime = 840; // 2:00 PM

[settingInterface setDoNotDisturb:model
completion:^(BOOL success, NSError * _Nullable error) {
if (success) {
TSLog(@"勿扰模式设置成功");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

获取勿扰模式设置

- (void)getDoNotDisturbInfo:(void(^)(TSDoNotDisturbModel * _Nullable model,
NSError * _Nullable error))completion;

参数说明

参数名类型说明
completionvoid (^)(TSDoNotDisturbModel *, NSError *)完成回调,model 为设置信息

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface getDoNotDisturbInfo:^(TSDoNotDisturbModel * _Nullable model,
NSError * _Nullable error) {
if (!error && model) {
TSLog(@"勿扰模式状态: %@", model.isEnabled ? @"启用" : @"禁用");
TSLog(@"模式类型: %@", model.isTimePeriodMode ? @"时段模式" : @"全天模式");
if (model.isTimePeriodMode) {
TSLog(@"时间范围: %ld - %ld", (long)model.startTime, (long)model.endTime);
}
} else {
TSLog(@"获取设置失败: %@", error.localizedDescription);
}
}];

设置加强监测模式

- (void)setEnhancedMonitoring:(BOOL)enabled
completion:(TSCompletionBlock)completion;

参数说明

参数名类型说明
enabledBOOL是否启用加强监测模式(YES 启用,NO 禁用)
completionTSCompletionBlock完成回调,success 表示设置是否成功

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface setEnhancedMonitoring:YES
completion:^(BOOL success, NSError * _Nullable error) {
if (success) {
TSLog(@"加强监测模式已启用");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

获取加强监测模式状态

- (void)getEnhancedMonitoringStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;

参数说明

参数名类型说明
completionvoid (^)(BOOL, NSError *)完成回调,enabled 表示是否启用

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

[settingInterface getEnhancedMonitoringStatus:^(BOOL enabled, NSError * _Nullable error) {
if (!error) {
TSLog(@"加强监测模式状态: %@", enabled ? @"启用" : @"禁用");
} else {
TSLog(@"获取状态失败: %@", error.localizedDescription);
}
}];

检查是否支持单独健康配置

- (BOOL)isSupportIndividualHealthMonitorConfig;

参数说明

无参数

返回值说明

返回值说明
YES设备支持单独的健康监测配置,各类型可独立设置
NO设备不支持单独配置,应使用全局加强监测控制

代码示例

id<TSSettingInterface> settingInterface = [TSKitManager shared].settingInterface;

BOOL supportIndividualConfig = [settingInterface isSupportIndividualHealthMonitorConfig];

if (supportIndividualConfig) {
TSLog(@"设备支持单独健康监测配置");
// 可以调用其他模块的单独配置接口
} else {
TSLog(@"设备不支持单独配置,使用全局加强监测控制");
// 使用 setEnhancedMonitoring: 进行全局控制
}

注意事项

  1. 所有设置操作均需要设备与手机保持蓝牙连接状态,断连时调用方法将返回连接错误。

  2. 时间相关的设置(如抬腕亮屏、勿扰模式)使用从午夜0点开始计算的分钟数表示,范围为0-1439(或0-1440)。例如:

    • 8:00 AM = 480 分钟
    • 12:00 PM = 720 分钟
    • 10:00 PM = 1320 分钟
  3. 时段设置时,结束时间必须大于开始时间,否则设置可能失败。

  4. 调用获取方法时,如果返回值为 nil 且 error 不为空,表示获取失败,应检查错误原因。

  5. 设置持久化:所有设置在设备上均为持久化存储,断开蓝牙连接或关机后仍然保留。

  6. 在调用任何健康监测单独配置相关接口之前,应先使用 isSupportIndividualHealthMonitorConfig 方法判断设备能力,避免调用不支持的接口。

  7. 多个监听器注册:registerRaiseWristToWakeDidChanged: 支持同时注册多个监听器,每个监听器会在配置变化时被调用,取消注册时需使用相同的 block 引用。

  8. 蓝牙断连振动、运动目标提醒、来电响铃等功能需要设备支持相应的硬件功能,不同设备型号可能存在功能差异。

  9. 获取设备设置接口通常需要1-2秒的响应时间,建议在后台线程调用以避免阻塞主线程。

  10. 如果设置修改后未能立即生效,可等待1-2秒后重新获取确认,或查看是否存在设备离线等异常情况。