有的產品設計了重置(Reset)按鈕,用于清除設備上的配置,讓設備恢復到出廠狀態,這些功能由設備廠商去實現。但是有的場景下,設備商需要云端感知設備上執行了reset操作,那么需要調用Link SDK提供的API告知云端。
- 如果設備在線,調用reset接口到云端,成功之后銷毀整個linkkit(調用deinit),失敗按照流程2處理。
- 如果設備不在線,設置一個reset的標志位,然后銷毀整個linkkit,后續linkkit被重新初始化的時候,根據是否有這個reset標志位在建聯成功之后再調用reset接口,reset完成之后才會響應設備的發現。如果APP卸載或刪除APP數據之后,則下次啟動則不再執行reset操作了,標志位被清除了
LinkKit.getInstance().reset(new IConnectSendListener() {
@Override
public void onResponse(ARequest aRequest, AResponse aResponse) {
ALog.d(TAG, "reset onResponse ");
}
@Override
public void onFailure(ARequest aRequest, AError aError) {
ALog.d(TAG, "reset onFailure");
}
});
智能生活開放平臺的用戶解綁操作
背景說明:
如果產品是在阿里云IoT的智能生活開放平臺注冊,那么用戶只有通過手機APP與設備之間建立綁定關系之后,才能對設備進行控制。如果設備被出售或者轉讓給了另外一個用戶,那么新用戶可以通過觸按reset按鍵告知云端解除設備與原用戶的綁定關系,避免原用戶對設備可以繼續進行控制。
此時就需要調用LinkKit.getInstance().reset
接口來告知云端解除設備與原有用戶的綁定關系。
允許重新進行動態注冊的操作
背景說明:
如果產品的認證選用了動態注冊功能,設備出廠時只需要燒寫ProductKey、ProductSecret,設備連接到阿里云物聯網時可以通過動態注冊過程去獲取設備的DeviceSecret;但是當設備獲取到了DeviceSecret之后,如果通過動態注冊過程去獲取設備的DeviceSecret,云端將會拒絕。
因此設備獲取到DeviceSecret之后,需要將DeviceSecret固化到非應用存儲中,并且即使用戶觸按reset按鍵或者卸載APP或者刪除APP數據也不要將DeviceSecret刪除掉。 如果設備因為某些原因導致DeviceSecret被刪掉,為了讓該設備能夠繼續被使用,開發者需要將該設備的ProductKey、DeviceName記錄下來,到阿里云控制臺刪除對應deviceName 的設備,然后重新創建一個相同deviceName的設備即可。廠家需要注意正式發布的產品不允許出現deviceSecret可以被用戶刪除的情況。