Setting
The Setting module provides comprehensive device configuration management, allowing you to control wearing habits, notifications, display settings, and health monitoring behavior. All settings are persisted on the device and retained after power off, ensuring consistent user preferences across sessions.
Prerequisites
- Device must be connected via Bluetooth
- User must have appropriate permissions for health and notification settings
- Device firmware must support the setting operations being requested
- For call ring functionality, call notification permission is required
Data Models
TSWristWakeUpModel
Configures the wrist wake up feature settings for screen activation.
| Property | Type | Description |
|---|---|---|
isEnable | BOOL | Enable/disable status of wrist wake up feature |
startTime | NSInteger | Start time in minutes from midnight (0-1439). Example: 480 = 8:00 AM |
endTime | NSInteger | End time in minutes from midnight (0-1439). Example: 1320 = 10:00 PM. Must be greater than startTime |
TSDoNotDisturbModel
Configures the do not disturb mode settings for the device.
| Property | Type | Description |
|---|---|---|
isEnabled | BOOL | Whether do not disturb mode is enabled |
isTimePeriodMode | BOOL | YES for time period mode, NO for all-day mode |
startTime | NSInteger | Start time in minutes from midnight (0-1440). Only used in time period mode |
endTime | NSInteger | End time in minutes from midnight (0-1440). Must be greater than startTime. Only used in time period mode |
Enumerations
TSWearingHabit
Specifies which hand the device is worn on.
| Value | Description |
|---|---|
TSWearingHabitLeft | Device is worn on the left hand |
TSWearingHabitRight | Device is worn on the right hand |
Callback Types
TSCompletionBlock
typedef void (^TSCompletionBlock)(BOOL success, NSError *_Nullable error);
Standard completion callback for setting operations.
| Parameter | Type | Description |
|---|---|---|
success | BOOL | Whether the operation was successful |
error | NSError * | Error information if operation failed, nil if successful |
API Reference
Set wearing habit
Sets which hand the device is worn on, affecting screen orientation and gesture recognition.
- (void)setWearingHabit:(TSWearingHabit)habit
completion:(TSCompletionBlock)completion;
| Parameter | Type | Description |
|---|---|---|
habit | TSWearingHabit | Target wearing habit (left or right hand) |
completion | TSCompletionBlock | Callback block invoked when operation completes |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface setWearingHabit:TSWearingHabitRight
completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"Wearing habit set to right hand successfully");
} else {
TSLog(@"Failed to set wearing habit: %@", error.localizedDescription);
}
}];
Get current wearing habit
Retrieves the current wearing habit setting from the device.
- (void)getCurrentWearingHabit:(void(^)(TSWearingHabit habit, NSError * _Nullable error))completion;
| Parameter | Type | Description |
|---|---|---|
completion | void (^)(TSWearingHabit, NSError *) | Callback block with current habit and error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface getCurrentWearingHabit:^(TSWearingHabit habit, NSError *error) {
if (!error) {
NSString *habitStr = (habit == TSWearingHabitLeft) ? @"Left" : @"Right";
TSLog(@"Current wearing habit: %@", habitStr);
} else {
TSLog(@"Failed to get wearing habit: %@", error.localizedDescription);
}
}];
Set Bluetooth disconnection vibration
Controls whether the device vibrates when Bluetooth connection is lost.
- (void)setBluetoothDisconnectionVibration:(BOOL)enabled
completion:(TSCompletionBlock)completion;
| Parameter | Type | Description |
|---|---|---|
enabled | BOOL | YES to enable vibration on Bluetooth disconnection, NO to disable |
completion | TSCompletionBlock | Callback block invoked when operation completes |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface setBluetoothDisconnectionVibration:YES
completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"Bluetooth disconnection vibration enabled");
} else {
TSLog(@"Failed to set Bluetooth disconnection vibration: %@", error.localizedDescription);
}
}];
Get Bluetooth disconnection vibration status
Retrieves the current Bluetooth disconnection vibration setting.
- (void)getBluetoothDisconnectionVibrationStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;
| Parameter | Type | Description |
|---|---|---|
completion | void (^)(BOOL, NSError *) | Callback block with current status and error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface getBluetoothDisconnectionVibrationStatus:^(BOOL enabled, NSError *error) {
if (!error) {
TSLog(@"Bluetooth disconnection vibration is %@", enabled ? @"enabled" : @"disabled");
} else {
TSLog(@"Failed to get Bluetooth disconnection vibration status: %@", error.localizedDescription);
}
}];
Set exercise goal achievement reminder
Controls whether the device notifies when exercise goals are achieved.
- (void)setExerciseGoalReminder:(BOOL)enabled
completion:(TSCompletionBlock)completion;
| Parameter | Type | Description |
|---|---|---|
enabled | BOOL | YES to enable goal achievement reminders, NO to disable |
completion | TSCompletionBlock | Callback block invoked when operation completes |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface setExerciseGoalReminder:YES
completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"Exercise goal reminder enabled");
} else {
TSLog(@"Failed to set exercise goal reminder: %@", error.localizedDescription);
}
}];
Get exercise goal reminder status
Retrieves the current exercise goal reminder setting.
- (void)getExerciseGoalReminderStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;
| Parameter | Type | Description |
|---|---|---|
completion | void (^)(BOOL, NSError *) | Callback block with current status and error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface getExerciseGoalReminderStatus:^(BOOL enabled, NSError *error) {
if (!error) {
TSLog(@"Exercise goal reminder is %@", enabled ? @"enabled" : @"disabled");
} else {
TSLog(@"Failed to get exercise goal reminder status: %@", error.localizedDescription);
}
}];
Set call ring
Controls device behavior for incoming calls, including ringtone and vibration.
- (void)setCallRing:(BOOL)enabled
completion:(TSCompletionBlock)completion;
| Parameter | Type | Description |
|---|---|---|
enabled | BOOL | YES to enable call ring and vibration, NO to disable |
completion | TSCompletionBlock | Callback block invoked when operation completes |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface setCallRing:YES
completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"Call ring enabled");
} else {
TSLog(@"Failed to set call ring: %@", error.localizedDescription);
}
}];
Get call ring status
Retrieves the current call ring setting.
- (void)getCallRingStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;
| Parameter | Type | Description |
|---|---|---|
completion | void (^)(BOOL, NSError *) | Callback block with current status and error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface getCallRingStatus:^(BOOL enabled, NSError *error) {
if (!error) {
TSLog(@"Call ring is %@", enabled ? @"enabled" : @"disabled");
} else {
TSLog(@"Failed to get call ring status: %@", error.localizedDescription);
}
}];
Set raise wrist to wake screen
Configures the wrist wake up feature including enable status and time period.
- (void)setRaiseWristToWake:(TSWristWakeUpModel *)model
completion:(TSCompletionBlock)completion;
| Parameter | Type | Description |
|---|---|---|
model | TSWristWakeUpModel * | Model containing wake up settings with isEnable, startTime, and endTime properties |
completion | TSCompletionBlock | Callback block invoked when operation completes |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
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 *error) {
if (success) {
TSLog(@"Raise wrist to wake configured successfully");
} else {
TSLog(@"Failed to set raise wrist to wake: %@", error.localizedDescription);
}
}];
Get raise wrist to wake screen settings
Retrieves the current wrist wake up feature configuration.
- (void)getRaiseWristToWakeStatus:(void(^)(TSWristWakeUpModel * _Nullable model,
NSError * _Nullable error))completion;
| Parameter | Type | Description |
|---|---|---|
completion | void (^)(TSWristWakeUpModel *, NSError *) | Callback block with current model and error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface getRaiseWristToWakeStatus:^(TSWristWakeUpModel *model, NSError *error) {
if (!error && model) {
TSLog(@"Raise wrist to wake is %@, from %ld to %ld minutes from midnight",
model.isEnable ? @"enabled" : @"disabled",
(long)model.startTime,
(long)model.endTime);
} else {
TSLog(@"Failed to get raise wrist to wake status: %@", error.localizedDescription);
}
}];
Register raise wrist to wake configuration change listener
Registers a callback to receive notifications when wrist wake up settings change on the device.
- (void)registerRaiseWristToWakeDidChanged:(void(^)(TSWristWakeUpModel * _Nullable model,
NSError * _Nullable error))didChangeBlock;
| Parameter | Type | Description |
|---|---|---|
didChangeBlock | void (^)(TSWristWakeUpModel *, NSError *) | Callback block invoked when configuration changes, providing updated model or error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
void (^changeHandler)(TSWristWakeUpModel *, NSError *) = ^(TSWristWakeUpModel *model, NSError *error) {
if (!error && model) {
TSLog(@"Wrist wake up configuration changed: enabled=%d, from %ld to %ld",
model.isEnable,
(long)model.startTime,
(long)model.endTime);
} else {
TSLog(@"Configuration change notification error: %@", error.localizedDescription);
}
};
[settingInterface registerRaiseWristToWakeDidChanged:changeHandler];
Set do not disturb mode
Configures the do not disturb mode settings including enable status and time period.
- (void)setDoNotDisturb:(TSDoNotDisturbModel *)model
completion:(TSCompletionBlock)completion;
| Parameter | Type | Description |
|---|---|---|
model | TSDoNotDisturbModel * | Model containing DND settings with isEnabled, isTimePeriodMode, startTime, and endTime properties |
completion | TSCompletionBlock | Callback block invoked when operation completes |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
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 *error) {
if (success) {
TSLog(@"Do not disturb mode configured successfully");
} else {
TSLog(@"Failed to set do not disturb mode: %@", error.localizedDescription);
}
}];
Get do not disturb mode settings
Retrieves the current do not disturb mode configuration from the device.
- (void)getDoNotDisturbInfo:(void(^)(TSDoNotDisturbModel * _Nullable model,
NSError * _Nullable error))completion;
| Parameter | Type | Description |
|---|---|---|
completion | void (^)(TSDoNotDisturbModel *, NSError *) | Callback block with current model and error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface getDoNotDisturbInfo:^(TSDoNotDisturbModel *model, NSError *error) {
if (!error && model) {
if (model.isEnabled) {
if (model.isTimePeriodMode) {
TSLog(@"DND enabled in time period mode: from %ld to %ld",
(long)model.startTime,
(long)model.endTime);
} else {
TSLog(@"DND enabled in all-day mode");
}
} else {
TSLog(@"DND is disabled");
}
} else {
TSLog(@"Failed to get do not disturb info: %@", error.localizedDescription);
}
}];
Set enhanced monitoring mode
Enables or disables enhanced health monitoring with higher precision and data collection frequency.
- (void)setEnhancedMonitoring:(BOOL)enabled
completion:(TSCompletionBlock)completion;
| Parameter | Type | Description |
|---|---|---|
enabled | BOOL | YES to enable enhanced monitoring with higher precision, NO for standard monitoring |
completion | TSCompletionBlock | Callback block invoked when operation completes |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface setEnhancedMonitoring:YES
completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"Enhanced monitoring enabled");
} else {
TSLog(@"Failed to set enhanced monitoring: %@", error.localizedDescription);
}
}];
Get enhanced monitoring mode status
Retrieves the current enhanced monitoring mode setting.
- (void)getEnhancedMonitoringStatus:(void(^)(BOOL enabled, NSError * _Nullable error))completion;
| Parameter | Type | Description |
|---|---|---|
completion | void (^)(BOOL, NSError *) | Callback block with current status and error |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
[settingInterface getEnhancedMonitoringStatus:^(BOOL enabled, NSError *error) {
if (!error) {
TSLog(@"Enhanced monitoring is %@", enabled ? @"enabled" : @"disabled");
} else {
TSLog(@"Failed to get enhanced monitoring status: %@", error.localizedDescription);
}
}];
Check individual health monitor configuration support
Determines whether the device supports independent configuration for each health monitor type.
- (BOOL)isSupportIndividualHealthMonitorConfig;
| Return Value | Description |
|---|---|
BOOL | YES if individual health monitor types can be configured separately, NO if only global enhanced monitoring control is supported |
Code Example:
id<TSSettingInterface> settingInterface = (id<TSSettingInterface>)device;
if ([settingInterface isSupportIndividualHealthMonitorConfig]) {
TSLog(@"Device supports individual health monitor configuration");
// Can call individual health monitor set/get config APIs
} else {
TSLog(@"Device only supports global enhanced monitoring control");
// Use setEnhancedMonitoring: / getEnhancedMonitoringStatus: instead
}
Important Notes
-
Time format consistency: All time values are expressed as minutes from midnight (0-1439). For example, 480 = 8:00 AM, 1320 = 10:00 PM. Ensure end times are always greater than start times when configuring time periods.
-
Bluetooth connection requirement: All setting operations require an active Bluetooth connection to the device. Operations will fail with an error if the device is disconnected.
-
Persistence guarantee: All configuration changes are automatically persisted on the device and will be retained even after device power off and restart.
-
Synchronous state validation: When setting new values, verify the changes by reading back the settings to ensure they were applied correctly, as device firmware may enforce validation rules.
-
Multiple listener registration: For configuration change listeners (e.g., raise wrist to wake), you can register multiple callbacks simultaneously. Each will be invoked independently when changes occur.
-
Enhanced monitoring impact: Enabling enhanced monitoring increases battery consumption. Consider battery life implications when configuring monitoring settings.
-
Individual health monitor capability: Before using individual health monitor configuration APIs from other modules (e.g., TSAutoMonitorInterface), always call
isSupportIndividualHealthMonitorConfigfirst. If it returns NO, fall back to global enhanced monitoring control. -
Do not disturb all-day mode: When
isTimePeriodModeis NO, the device enters all-day do not disturb mode and thestartTimeandendTimevalues are ignored. -
Call notification permissions: Call ring functionality requires proper system permissions. Ensure the app has requested and received call notification permissions before enabling call ring settings.
-
Wearing habit effects: Changing the wearing habit affects multiple device behaviors including screen orientation, gesture recognition direction, and raise wrist detection sensitivity. Notify users of these side effects when changing this setting.