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