Last Updated on : 2024-08-22 05:39:37download
When a common device stays offline for more than 30 minutes or a low power device is offline for more than 8 hours, both the phone’s push notifications and the app’s Message Center will receive a message.
source 'https://github.com/tuya/tuya-pod-specs.git'
platform :ios, '11.0'
target 'Your_Project_Name' do
pod "ThingSmartBusinessExtensionKit"
end
| Request parameters | Type | Description |
|---|---|---|
| deviceId | string | The device ID. |
| success | block | The success callback. |
| failure | block | The failure callback. |
/// get the offline reminder support status of device
/// - Parameters:
/// - deviceId: the ID of the device
/// - success: supported if status is true, otherwise not supported
/// - failure: an error occurs
class func getOfflineReminderSupportStatus( withDeviceId deviceId: String, success: @escaping (Bool) -> Void, failure: @escaping (Error) -> Void)
| Request parameters | Type | Description |
|---|---|---|
| deviceId | string | The device ID. |
| success | block | The success callback. |
| failure | block | The failure callback. |
/// get the offline reminder status of device
/// - Parameters:
/// - deviceId: the ID of the device
/// - success: open if status is true, otherwise close
/// - failure: an error occurs
class func getOfflineReminderStatus(withDeviceId deviceId: String, success: @escaping (Bool) -> Void, failure: @escaping (Error) -> Void)
| Request parameters | Type | Description |
|---|---|---|
| deviceId | string | The device ID. |
| status | bool | true: Enable. false: Disable. |
| success | block | The success callback. |
| failure | block | The failure callback. |
/// update the offline reminder status of device
/// - Parameters:
/// - deviceId: the ID of the device
/// - status: the offline reminder status
/// - success: update success
/// - failure: an error occurs
class func updateOfflineReminderStatus(withDeviceId deviceId: String, status: Bool, success: @escaping () -> Void, failure: @escaping (Error) -> Void)
class DeviceOfflineReminderVC: UIViewController {
var deviceId: String
lazy var label: UILabel = {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
label.textColor = UIColor.green
return label
}()
lazy var statusSwitch: UISwitch = {
let statusSwitch = UISwitch(frame: CGRectZero)
statusSwitch.addTarget(self, action: #selector(change(sender:)), for: .valueChanged)
return statusSwitch
}()
init(deviceId: String) {
self.deviceId = deviceId
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(self.label)
self.view.addSubview(self.statusSwitch)
self.label.frame = CGRect(x: 20, y: 100, width: 150, height: 27)
self.statusSwitch.frame = CGRect(x: 170, y: 100, width: 0, height: 0)
self.statusSwitch.isHidden = true
self.loadData()
}
func loadData() {
SVProgressHUD.show()
ThingDeviceOfflineReminderManager.getOfflineReminderSupportStatus(withDeviceId: self.deviceId) { support in
if (support) {
ThingDeviceOfflineReminderManager.getOfflineReminderStatus(withDeviceId: self.deviceId) { status in
SVProgressHUD.dismiss()
self.label.text = "support"
self.statusSwitch.isHidden = false
self.statusSwitch.isOn = status
} failure: { e in
SVProgressHUD.dismiss()
self.label.text = "support"
self.statusSwitch.isHidden = false
self.statusSwitch.isOn = false
}
}else{
SVProgressHUD.dismiss()
self.label.text = "do not support"
self.statusSwitch.isHidden = true
}
} failure: { e in
SVProgressHUD.dismiss()
}
}
@objc func change(sender: UISwitch) {
ThingDeviceOfflineReminderManager.updateOfflineReminderStatus(withDeviceId: self.deviceId, status: sender.isOn) {
} failure: { e in
}
}
}
Implement a user interface. When the interface is initialized, pass in the deviceId as the device ID.
Show UILabel and UISwitch on the interface. Tapping UISwitch will invoke the change(sender:) method. Hide UISwitch because it is currently unknown if the device supports offline notifications.
class DeviceOfflineReminderVC: UIViewController {
var deviceId: String
lazy var label: UILabel = {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
label.textColor = UIColor.green
return label
}()
lazy var statusSwitch: UISwitch = {
let statusSwitch = UISwitch(frame: CGRectZero)
statusSwitch.addTarget(self, action: #selector(change(sender:)), for: .valueChanged)
return statusSwitch
}()
init(deviceId: String) {
self.deviceId = deviceId
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(self.label)
self.view.addSubview(self.statusSwitch)
self.label.frame = CGRect(x: 20, y: 100, width: 150, height: 27)
self.statusSwitch.frame = CGRect(x: 170, y: 100, width: 0, height: 0)
self.statusSwitch.isHidden = true
}
@objc func change(sender: UISwitch) {
}
}
Add the loadData method that checks whether the device supports offline notifications through ThingDeviceOfflineReminderManager.getOfflineReminderSupportStatus(withDeviceId:success:failure:), and call this method back in viewDidLoad. When an error occurs or the returned value of support is false, the device does not support offline notifications. Set the UILabel text to "not support".
class DeviceOfflineReminderVC: UIViewController {
override func viewDidLoad() {
...
self.statusSwitch.isHidden = true
self.loadData()
}
func loadData() {
SVProgressHUD.show()
ThingDeviceOfflineReminderManager.getOfflineReminderSupportStatus(withDeviceId: self.deviceId) { support in
if (support) {
//todo
}else{
SVProgressHUD.dismiss()
self.label.text = "not support"
self.statusSwitch.isHidden = true
}
} failure: { e in
SVProgressHUD.dismiss()
self.label.text = "not support"
self.statusSwitch.isHidden = true
}
}
}
When support is true, request the current device’s offline notification status through ThingDeviceOfflineReminderManager.getOfflineReminderStatus(withDeviceId:success:failure:) and update UISwitch accordingly.
class DeviceOfflineReminderVC: UIViewController {
func loadData() {
SVProgressHUD.show()
ThingDeviceOfflineReminderManager.getOfflineReminderSupportStatus(withDeviceId: self.deviceId) { support in
if (support) {
ThingDeviceOfflineReminderManager.getOfflineReminderStatus(withDeviceId: self.deviceId) { status in
SVProgressHUD.dismiss()
self.label.text = "support"
self.statusSwitch.isHidden = false
self.statusSwitch.isOn = status
} failure: { e in
SVProgressHUD.dismiss()
self.label.text = "support"
self.statusSwitch.isHidden = false
self.statusSwitch.isOn = false
}
}else{
SVProgressHUD.dismiss()
self.label.text = "not support"
self.statusSwitch.isHidden = true
}
} failure: { e in
SVProgressHUD.dismiss()
self.label.text = "not support"
self.statusSwitch.isHidden = true
}
}
}
When UISwitch is tapped, update the offline notification status through ThingDeviceOfflineReminderManager.updateOfflineReminderStatus(withDeviceId:status:success:failure:).
class DeviceOfflineReminderVC: UIViewController {
@objc func change(sender: UISwitch) {
ThingDeviceOfflineReminderManager.updateOfflineReminderStatus(withDeviceId: self.deviceId, status: sender.isOn) {
} failure: { e in
}
}
}
For more information, see Demo.
For more information, see Demo.
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback