一部のプロダクトは、デバイスの構成をクリアし、デバイスを工場出荷時の設定にリセットするためのリセットボタンを備えています。デバイスメーカーはこれらの機能を実装しています。ただし、シナリオによっては、デバイスメーカーが IoT Platform でデバイスのリセット操作を検出する必要がある場合、Link SDK が提供する API 操作を呼び出して、リセットを IoT Platform に通知する必要があります。
- デバイスが IoT Platform に接続されている場合は、リセット API 操作が呼び出されます。この呼び出しが成功した場合、deinit 関数が呼び出されて SDK が初期化解除されます。この呼び出しが失敗した場合は、2 番目のプロセスが適用されます。
- デバイスが IoT Platform から切断されている場合は、リセットフラグビットが設定され、SDK が初期化解除されます。後で SDK が再初期化されると、接続が作成された後にリセットフラグビットが存在する場合、リセット操作が呼び出されます。 IoT Platform は、リセットが完了した後、デバイスの検出に応答します。アプリケーションがアンインストールされた場合、またはアプリケーションデータが削除された場合、フラグビットがクリアされるため、次回の起動時にリセット操作は実行されません。
LinkKit.getInstance().reset(new IConnectSendListener() {
@Override
public void onResponse(ARequest aRequest, AResponse aResponse) {
// reset onResponse
ALog.d(TAG, "reset onResponse ");
}
@Override
public void onFailure(ARequest aRequest, AError aError) {
// reset onFailure
ALog.d(TAG, "reset onFailure");
}
});
Living Link 上のユーザーからデバイスのバインドを解除する
背景
Living Link にプロダクトを登録する場合、モバイル アプリケーションを使用してデバイスをバインドした後にのみ、そのプロダクトのデバイスを制御できます。デバイスが別のユーザーに販売または譲渡された場合、新しいユーザーはリセットキーを押すことで、デバイスと元のユーザーのバインドを解除するように IoT Platform に通知できるため、元のユーザーはデバイスを制御できなくなります。
この場合、LinkKit.getInstance().reset
操作を呼び出して、元のユーザーからデバイスのバインドを解除できます。
動的登録の繰り返しを許可する
背景
プロダクトが動的に登録されている場合、ProductKey と ProductSecret のみが工場でプロダクトのデバイスに書き込まれます。デバイスが IoT Platform に接続されると、デバイスは動的登録を使用して IoT Platform から DeviceSecret を取得できます。ただし、デバイスが DeviceSecret を取得した後は、動的登録を使用して DeviceSecret を再度取得することはできません。それ以外の場合、IoT Platform はこのリクエストを拒否します。
したがって、デバイスが DeviceSecret を取得した後は、DeviceSecret を非アプリケーション ストレージに永続的に保存する必要があります。リセットキーを押したり、アプリケーションをアンインストールしたり、アプリケーションデータを削除したりしても、DeviceSecret を削除することはできません。何らかの理由でデバイスの DeviceSecret が削除された場合は、デバイスの ProductKey と DeviceName を記録し、IoT Platform コンソールで対応するデバイスを削除してから、削除されたデバイスと同じ DeviceName でデバイスを作成する必要があります。デバイスメーカーは、正式に発売されたプロダクトのデバイスの DeviceSecret をユーザーが削除できないようにする必要があります。