全部产品
Search
文档中心

IoT Platform:Verifikasi dan menghubungkan perangkat

更新时间:Jul 06, 2025

Sebelum menghubungkan perangkat ke IoT Platform, perangkat harus melewati verifikasi identitas. Topik ini menjelaskan cara menginisialisasi Link SDK untuk Android guna menghubungkan perangkat ke IoT Platform.

Prasyarat

  • Produk dan perangkat telah dibuat. Untuk informasi lebih lanjut, lihat Buat Produk dan Perangkat.

  • Paket demo Link SDK untuk Android telah diunduh.

  • Informasi sertifikat perangkat dan titik akhir tempat Anda ingin menghubungkan perangkat diperoleh. Untuk informasi lebih lanjut, lihat konfigurasi parameter dalam topik Link SDK untuk Android.

Informasi latar belakang

Link SDK untuk Android memungkinkan Anda menggunakan DeviceSecret atau IoT Device ID (ID²) untuk memverifikasi identitas perangkat.

  • Gunakan DeviceSecret untuk memverifikasi perangkat:

    Metode verifikasi

    Metode pendaftaran

    Deskripsi

    Verifikasi satu-sertifikat-per-perangkat

    Tidak tersedia

    Sertifikat perangkat yang mencakup ProductKey, DeviceName, dan DeviceSecret dibakar ke setiap perangkat.

    Verifikasi satu-sertifikat-per-produk

    Pendaftaran awal

    • Sertifikat produk yang mencakup ProductKey dan ProductSecret dibakar ke semua perangkat dari suatu produk.

    • Anda harus mengaktifkan fitur dynamic registration untuk produk tersebut.

    • Registrasi dinamis memungkinkan perangkat mendapatkan DeviceSecret.

    Tanpa pendaftaran awal

    • Sertifikat produk yang mencakup ProductKey dan ProductSecret dibakar ke semua perangkat dari suatu produk.

    • Anda harus mengaktifkan fitur dynamic registration untuk produk tersebut.

    • Registrasi dinamis memungkinkan perangkat mendapatkan kombinasi ClientID dan DeviceToken.

    Catatan

    Untuk informasi tentang perbedaan antara metode verifikasi satu-sertifikat-per-produk dengan pendaftaran awal dan tanpa pendaftaran awal, lihat Perbedaan antara metode verifikasi.

  • Gunakan ID² untuk memverifikasi perangkat: ID² adalah pengenal tepercaya untuk perangkat IoT Platform. ID² tahan terhadap manipulasi dan tidak dapat dipalsukan.

Catatan

Untuk informasi tentang cara menggunakan ID² untuk memverifikasi perangkat, lihat kode contoh dalam file InitManager.java.

Verifikasi satu-sertifikat-per-perangkat

Kode contoh untuk metode verifikasi satu-sertifikat-per-perangkat:

AppLog.setLevel(ALog.LEVEL_DEBUG);

final LinkKitInitParams params = new LinkKitInitParams();

String productKey = "${YourProductKey}";
String deviceName = "${YourDeviceName}";
String deviceSecret = "${YourDeviceSecret}";
String productSecret = "";

// Langkah 1: Tentukan informasi tentang sertifikat perangkat.
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey; // ProductKey dari produk.
deviceInfo.deviceName = deviceName;  // DeviceName dari perangkat.
deviceInfo.deviceSecret = deviceSecret;  // DeviceSecret dari perangkat.
deviceInfo.productSecret = productSecret;  // ProductSecret dari produk.
params.deviceInfo = deviceInfo;

// Langkah 2: Tentukan nama domain default global.
IoTApiClientConfig userData = new IoTApiClientConfig();
params.connectConfig = userData;

// Langkah 3: Cache model Thing Specification Language (TSL).
Map<String, ValueWrapper> propertyValues = new HashMap<>();
/**
 * Data TSL disimpan dalam parameter sebelumnya. Anda tidak dapat menghapus atau meninggalkan parameter ini kosong. Jika tidak, fitur terkait TSL mungkin gagal.
 * Setelah Anda memanggil operasi API untuk mengirimkan data TSL, data TSL disimpan dalam cache. 
 */
params.propertyValues = propertyValues;

// Langkah 4: Konfigurasikan parameter MQTT.
/**
 * Parameter MQTT, seperti titik akhir. Untuk informasi lebih lanjut, lihat file deviceinfo.
 * Nama domain, ProductSecret, dan metode verifikasi keamanan.
 */
IoTMqttClientConfig clientConfig = new IoTMqttClientConfig();
clientConfig.receiveOfflineMsg = false;//cleanSession=1 Pesan offline tidak dapat diterima.
// Informasi tentang titik akhir Message Queuing Telemetry Transport (MQTT).
clientConfig.channelHost = "${YourMqttHostUrl}:8883";
params.mqttClientConfig = clientConfig;
MqttConfigure.pingSenderType = "android"; // Atur jenis deteksi denyut jantung ke android dan atur jenis timer untuk deteksi denyut jantung ke AlarmTImer. Ini memastikan bahwa deteksi denyut jantung dilakukan sesuai jadwal ketika layar dimatikan secara otomatis.

// Langkah 5: Konfigurasikan fitur lanjutan. Secara default, semua fitur lanjutan dinonaktifkan kecuali fitur model TSL.
IoTDMConfig ioTDMConfig = new IoTDMConfig();
// Secara default, fitur model TSL diaktifkan. Setelah Anda menginisialisasi model TSL yang diminta dari IoT Platform, onInitDone dikembalikan.
ioTDMConfig.enableThingModel = true;
// Secara default, fitur gateway dinonaktifkan. Setelah Anda mengaktifkan fitur gateway, modul gateway diinisialisasi untuk mendapatkan daftar sub-perangkat dari modul gateway dari IoT Platform.
ioTDMConfig.enableGateway = false;
// Secara default, fitur dorongan log dinonaktifkan. Anda dapat mengaktifkan fitur ini.
ioTDMConfig.enableLogPush = false;
params.ioTDMConfig = ioTDMConfig;

// Langkah 6: Konfigurasikan fungsi panggilan balik untuk memproses pesan downstream.
LinkKit.getInstance().registerOnPushListener(new IConnectNotifyListener() {
    @Override
    public void onNotify(String s, String s1, AMessage aMessage) {
        // Anda dapat mengonfigurasi fungsi panggilan balik untuk pemrosesan pesan downstream berdasarkan dokumentasi.
    }

    @Override
    public boolean shouldHandle(String s, String s1) {
        return true; // Konfigurasikan parameter berdasarkan kebutuhan bisnis Anda dan dokumentasi.
    }

    @Override
    public void onConnectStateChange(String s, ConnectState connectState) {
        // Panggilan balik untuk perubahan status koneksi tipe koneksi yang sesuai. Untuk informasi tentang status koneksi, lihat ConnectState di SDK.
        // Jika SDK memutuskan koneksi perangkat dari IoT Platform karena kondisi jaringan yang buruk, SDK secara otomatis mencoba menyambungkan kembali perangkat ke IoT Platform pada interval 2 pangkat n (satuan: detik). n adalah bilangan bulat mulai dari 0 hingga 7. Interval maksimum adalah 128 detik.
    }
});

// Jika Anda ingin memverifikasi perangkat menggunakan metode verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal, DeviceToken dan ClientID diperlukan saat Anda menghubungkan perangkat ke IoT Platform.
// Langkah 7: Konfigurasikan parameter untuk verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal. Fitur ini dinonaktifkan secara default.
// MqttConfigure.deviceToken = DemoApplication.deviceToken;
// MqttConfigure.clientId = DemoApplication.clientId;

// Langkah 8: Konfigurasikan parameter yang diperlukan untuk mengunggah file melalui HTTP/2.
/**
 * Jika Anda ingin mengunggah file ke IoT Platform melalui HTTP/2, Anda harus menentukan nama domain.
 */
// IoTH2Config ioTH2Config = new IoTH2Config();
// ioTH2Config.clientId = "client-id";
// ioTH2Config.endPoint = "https://" + productKey + ioTH2Config.endPoint;// Titik akhir yang digunakan untuk mengunggah file melalui HTTP/2 ke IoT Platform.
// params.iotH2InitParams = ioTH2Config;

/**
 * Inisialisasi SDK untuk menghubungkan perangkat ke IoT Platform.
 * onError Inisialisasi gagal. Jika inisialisasi gagal karena masalah jaringan, Anda harus menginisialisasi ulang SDK.
 * onInitDone Inisialisasi berhasil.
 */
LinkKit.getInstance().init(getAppContext(), params, new ILinkKitConnectListener() {
    @Override
    public void onError(AError error) {
        ALog.d(TAG, "onError() called with: error = [" + (error) + "]");
    }

    @Override
    public void onInitDone(Object data) {
        ALog.d(TAG, "onInitDone() called with: data = [" + data + "]");
        // Verifikasi perangkat selesai dan perangkat terhubung. Anda dapat menjalankan bisnis Anda sesuai kebutuhan.
    }
});

Verifikasi satu-sertifikat-per-produk

Verifikasi satu-sertifikat-per-produk juga dikenal sebagai registrasi dinamis. Fitur ini digunakan untuk meminta DeviceSecret dari IoT Platform. Metode verifikasi satu-sertifikat-per-produk diklasifikasikan menjadi dua jenis: tanpa pendaftaran awal dan dengan pendaftaran awal. Sebelum menggunakan fitur ini, pastikan prasyarat berikut terpenuhi:

  • Registrasi Dinamis diaktifkan untuk produk yang Anda buat di konsol IoT Platform.

  • Dalam file deviceinfo paket demo, parameter deviceSecret dibiarkan kosong dan productSecret tidak kosong.

  • Langkah 1 hingga Langkah 3 dalam kode contoh dilakukan.

  • Setelah registrasi dinamis berhasil atau gagal, tutup koneksi persisten untuk registrasi dinamis. Untuk informasi tentang cara menutup koneksi, lihat Langkah 4.

  • Untuk memastikan keamanan perangkat, bakar DeviceSecret ke perangkat setelah mendapatkan DeviceSecret menggunakan metode verifikasi satu-sertifikat-per-produk.

Tabel berikut menjelaskan perbedaan antara metode verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal dan dengan pendaftaran awal.

Item

Pendaftaran Awal

Tanpa Pendaftaran Awal

Protokol

MQTT dan HTTPS

MQTT

Wilayah

  • Registrasi dinamis berbasis MQTT tersedia di semua wilayah di mana IoT Platform didukung.

  • Registrasi dinamis berbasis HTTPS hanya tersedia di wilayah China (Shanghai). Kami merekomendasikan agar Anda tidak menggunakan registrasi dinamis berbasis HTTPS. Kode contoh tidak termasuk kode untuk metode ini.

China (Shanghai) dan China (Beijing)

DeviceSecret yang Dikembalikan

Untuk informasi lebih lanjut tentang cara menggunakan DeviceSecret, lihat Langkah 1 dalam kode contoh untuk verifikasi satu-sertifikat-per-perangkat.

Bakar ClientID dan DeviceToken perangkat ke perangkat. Dengan cara ini, informasi tersebut dapat digunakan saat Anda menggunakan fitur tertentu, seperti menghubungkan perangkat ke IoT Platform. Untuk informasi lebih lanjut, lihat Langkah 7 dalam kode contoh untuk verifikasi satu-sertifikat-per-perangkat.

Pendaftaran Perangkat

Anda harus mendaftarkan DeviceName perangkat di konsol IoT Platform.

Anda tidak perlu mendaftarkan DeviceName perangkat di konsol IoT Platform.

Jumlah Penggunaan

  • Sertifikat perangkat dapat digunakan untuk mengaktifkan hanya satu perangkat fisik. Jika Perangkat A diaktifkan menggunakan DeviceName tetapi Perangkat B harus menggunakan DeviceName, Anda dapat menghapus Perangkat A dari konsol IoT Platform dan menonaktifkan DeviceSecret Perangkat A. Dengan cara ini, Anda dapat menggunakan DeviceName untuk menambahkan dan mengaktifkan Perangkat B di konsol IoT Platform.

  • Jika perangkat perlu diaktifkan kembali karena DeviceSecret hilang, Anda harus memanggil operasi ResetThing untuk menyetel ulang status perangkat menjadi Inactive. Kemudian, Anda dapat mengaktifkan kembali perangkat. DeviceSecret yang dikeluarkan oleh IoT Platform tetap tidak berubah.

Setiap ProductKey, ProductSecret, dan DeviceName dapat digunakan untuk mengaktifkan hingga lima perangkat fisik. Anda dapat mengaktifkan perangkat di konsol IoT Platform secara bersamaan. IoT Platform menghasilkan ClientID dan DeviceToken unik untuk setiap perangkat.

Catatan

Untuk informasi lebih lanjut tentang kode, lihat file DemoApplication.java dalam paket demo.

Kode contoh untuk registrasi dinamis:

String productKey = "${YourProductKey}";
String deviceName = "${YourDeviceName}";
String deviceSecret = "${YourDeviceSecret}";
String productSecret = "";
MqttInitParams initParams = new MqttInitParams(productKey, productSecret, deviceName, deviceSecret, MqttConfigure.MQTT_SECURE_MODE_TLS);

// Langkah 1: Periksa apakah metode verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal atau pendaftaran awal.
// Kasus 1: Jika Anda mengatur parameter registerType ke regnwl, metode verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal digunakan dan Anda tidak perlu membuat perangkat.
// Kasus 2: Jika Anda membiarkan parameter registerType kosong atau mengatur parameter registerType ke register, metode verifikasi satu-sertifikat-per-produk dengan pendaftaran awal digunakan dan Anda harus membuat perangkat.
initParams.registerType = "";

// Langkah 2: Tentukan titik akhir untuk registrasi dinamis.
MqttConfigure.mqttHost = "${YourMqttHostUrl}:8883";;

// (Opsional) Langkah 3: Anda harus menentukan parameter ini untuk instance Enterprise Edition, atau instance publik layanan IoT Platform yang diaktifkan pada 30 Juli 2021 dan seterusnya.
// Untuk instance publik layanan IoT Platform yang diaktifkan sebelum 30 Juli 2021, nilai parameter ini adalah string kosong "".
MqttConfigure.registerInstanceId = "${YourInstanceId}";

final Object lock = new Object();
LinkKit.getInstance().deviceDynamicRegister(this, initParams, new IOnCallListener() {
    @Override
    public void onSuccess(com.aliyun.alink.linksdk.channel.core.base.ARequest request, com.aliyun.alink.linksdk.channel.core.base.AResponse response) {
        ALog.i(TAG, "onSuccess() called with: request = [" + request + "], response = [" + response + "]");
        // response.data adalah array byte
        try {
            String responseData = new String((byte[]) response.data);
            JSONObject jsonObject = JSONObject.parseObject(responseData);
            String pk = jsonObject.getString("productKey");
            String dn = jsonObject.getString("deviceName");
            // Hasil yang dikembalikan jika metode verifikasi satu-sertifikat-per-produk dengan pendaftaran awal digunakan.
            String deviceSecret = jsonObject.getString("deviceSecret");

            // Hasil yang dikembalikan jika metode verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal digunakan.
            String clientId = jsonObject.getString("clientId");
            String deviceToken = jsonObject.getString("deviceToken");

            // Simpan kredensial yang dikembalikan dan lanjutkan ke Langkah 4. Setelah Anda menyelesaikan Langkah 4, Anda dapat menggunakan metode onSuccess untuk menghubungkan perangkat ke IoT Platform.

            // Panggil operasi API yang menunggu thread.
            synchronized (lock){
                lock.notify();
            }

        } catch (Exception e) {
        }

    }

    @Override
    public void onFailed(com.aliyun.alink.linksdk.channel.core.base.ARequest request, com.aliyun.alink.linksdk.channel.core.base.AError error) {
        ALog.e(TAG, "onFailed() called with: request = [" + request + "], error = [" + error + "]");
        // Panggil operasi API yang menunggu thread.
        synchronized (lock){
            lock.notify();
        }
    }

    @Override
    public boolean needUISafety() {
        return false;
    }
});

try{
    // Tunggu pesan downstream. Dalam kebanyakan kasus, pesan downstream dikembalikan dalam waktu 1 detik.
    synchronized (lock){
        lock.wait(3000);
    }
    
    // Langkah 4: Keluar dari registrasi dinamis
    // Jangan jalankan fungsi berikut dalam fungsi callback LinkKit.getInstance().deviceDynamicRegister. Jika tidak, kesalahan mungkin terjadi.
    LinkKit.getInstance().stopDeviceDynamicRegister(10 * 1000, null, new IMqttActionListener() {
        @Override
        public void onSuccess(IMqttToken iMqttToken) {
            ALog.d(TAG, "onSuccess() called with: iMqttToken = [" + iMqttToken + "]");
            // Hubungkan perangkat ke IoT Platform dan inisialisasi koneksi berdasarkan metode verifikasi satu-sertifikat-per-perangkat.
        }

        @Override
        public void onFailure(IMqttToken iMqttToken, Throwable throwable) {
            ALog.w(TAG, "onFailure() called with: iMqttToken = [" + iMqttToken + "], throwable = [" + throwable + "]");
        }
    });
}catch (Exception e){

};

Verifikasi perangkat berbasis ID²

. /**
 * Buat perangkat yang menggunakan verifikasi berbasis iTLS di konsol IoT Platform dan lakukan verifikasi berbasis iTLS untuk menginisialisasi perangkat.
 * Berikan izin ID² ke produk tempat perangkat tersebut milik.
 */
IoTMqttClientConfig clientConfig = new IoTMqttClientConfig(productKey, deviceName, deviceSecret);
clientConfig.channelHost = productKey + ".itls.cn-shanghai.aliyuncs.com:1883";
clientConfig.productSecret = productSecret;
clientConfig.secureMode = 8;
linkKitInitParams.mqttClientConfig = clientConfig;
// Jika Anda menggunakan instance Enterprise Edition atau instance publik layanan IoT Platform yang diaktifkan pada 30 Juli 2021 atau setelahnya, Anda dapat menentukan ID instance dengan mengganti variabel ${Instance ID} dalam perintah berikut dengan ID instance aktual dalam format iot-*******.
MqttConfigure.extraMqttClientIdItems=",instanceId=" + "${Instance ID}"; 

Parameter clientConfig.channelHost dalam kode contoh menentukan titik akhir yang dapat digunakan perangkat untuk terhubung ke IoT Platform.

Pengaturan lainnya

Anda dapat mengonfigurasi parameter berikut untuk mengonfigurasi pengaturan tambahan yang terkait dengan koneksi perangkat.

  • Koneksi MQTT

    Item

    Deskripsi

    Kode contoh

    Interval keepalive

    Tentukan interval keepalive untuk perangkat. Parameter ini menentukan periode waktu selama koneksi persisten dapat dipertahankan antara perangkat dan IoT Platform.

    Catatan
    • Interval keepalive default yang ditentukan dalam SDK adalah 65 detik.

    • Anda dapat menentukan interval keepalive yang berkisar antara 30 hingga 1.200 detik.

    // Interval keepalive. Satuan: detik.
    MqttConfigure.setKeepAliveInterval(int interval);

    Tingkat QoS

    Tentukan tingkat Quality of Service (QoS). Tingkat QoS adalah perjanjian yang mendefinisikan tingkat kualitas pengiriman pesan antara perangkat dan IoT Platform. Nilai valid:

    • 0: Setiap pesan dikirim paling banyak sekali.

    • 1: Setiap pesan dikirim setidaknya sekali.

    MqttPublishRequest request = new MqttPublishRequest();
    // Nilai valid: 0 dan 1. Nilai default: 0.
    request.qos = 0;
    request.isRPC = false;
    request.topic = topic.replace("request", "response");
    String resId = topic.substring(topic.indexOf("rrpc/request/")+13);
    request.msgId = resId;
    // Konfigurasikan parameter berdasarkan kebutuhan bisnis Anda.
    request.payloadObj = "{\"id\":\"" + resId + "\", \"code\":\"200\"" + ",\"data\":{} }";

    Pesan offline

    Parameter cleanSession menentukan apakah akan menerima pesan offline.

    IoTMqttClientConfig clientConfig = new IoTMqttClientConfig();
    // Sesuai dengan kode berikut: receiveOfflineMsg = !cleanSession. Secara default, pesan offline tidak dapat diterima. 
    clientConfig.receiveOfflineMsg = true;
     

    ClientID.

    Parameter clientId menentukan ClientID. Untuk informasi lebih lanjut, lihat deskripsi parameter clientId.

    MqttConfigure.clientId = "abcdef******";

    Mekanisme rekoneksi

    Parameter automaticReconnect menentukan apakah akan menyambungkan kembali perangkat ke IoT Platform. Nilai valid:

    • true: Sistem menyambungkan kembali perangkat ke IoT Platform.

    • false: Sistem tidak menyambungkan kembali perangkat ke IoT Platform.

    Kode contoh:

    MqttConfigure.automaticReconnect = true;
  • Deinisialisasi SDK

    Untuk melakukan deinisialisasi, Anda dapat memanggil fungsi berikut. Fungsi ini bekerja secara sinkron.

    Catatan

    Jika Anda ingin menginisialisasi SDK, pastikan deinisialisasi sebelumnya pada SDK selesai. Jika tidak, inisialisasi pada SDK mungkin gagal.

    // Batalkan pendaftaran objek notifyListener. Objek tersebut harus sama dengan objek notifyListener yang didaftarkan.
    LinkKit.getInstance().unRegisterOnPushListener(notifyListener);
    LinkKit.getInstance().deinit();
  • Status Koneksi dan Pendengar Pesan Downstream

    Anda dapat mengonfigurasi pendengar berikut untuk mendengarkan pesan koneksi dan pemutusan perangkat serta mendengarkan data yang dikirim dari IoT Platform:

    IConnectNotifyListener notifyListener = new IConnectNotifyListener() {
        @Override
        public void onNotify(String connectId, String topic, AMessage aMessage) {
            // Panggilan balik untuk data downstream dari IoT Platform.
            // Parameter connectId menentukan tipe koneksi, parameter topic menentukan topik downstream dari IoT Platform, dan parameter aMessage menentukan data downstream dari IoT Platform.
            // Tentukan fungsi bernama pushData untuk mengurai data.
            //String pushData = new String((byte[]) aMessage.data);
            // Contoh pushData:  {"method":"thing.service.test_service","id":"123374967","params":{"vv":60},"version":"1.0.0"}
            // Parameter method menentukan jenis layanan, dan parameter params menentukan isi data yang ingin Anda dorong.    
       }
        @Override
        public boolean shouldHandle(String connectId, String topic) {
            // Tentukan apakah akan memproses data downstream dari topik di IoT Platform.
            // Jika suatu topik tidak diproses, pendengar onNotify tidak dapat menerima data downstream dari topik tersebut di IoT Platform.
            return true; // Tentukan nilai berdasarkan skenario bisnis Anda.
        }
        @Override
        public void onConnectStateChange(String connectId, ConnectState connectState) {
            // Panggilan balik untuk perubahan status koneksi dari tipe koneksi yang sesuai. Untuk informasi tentang status koneksi, lihat deskripsi ConnectState dalam SDK.
            // Jika SDK memutuskan koneksi perangkat dari IoT Platform karena kondisi jaringan yang buruk, SDK secara otomatis mencoba menyambungkan kembali perangkat ke IoT Platform pada interval 2 pangkat n (satuan: detik). n adalah bilangan bulat mulai dari 0 hingga 7. Interval maksimum adalah 128 detik. Setelah interval mencapai 128 detik, SDK mencoba menyambungkan kembali perangkat ke IoT Platform pada interval 128 detik sampai perangkat terhubung. 
        }
    }
    // Daftarkan pendengar untuk mendengarkan data downstream, termasuk status koneksi persisten dan data downstream dari IoT Platform.
    LinkKit.getInstance().registerOnPushListener(notifyListener);
    // Batalkan pendaftaran pendengar yang mendengarkan data downstream. Pastikan pendengar yang dibatalkan pendaftarannya sama dengan pendengar yang Anda daftarkan.
    // LinkKit.getInstance().unRegisterOnPushListener(notifyListener);
                
    Catatan

    Secara default, fungsi panggilan balik onNotify dipanggil untuk mentransmisikan data downstream di thread UI. Di lp-iot-linkkit V1.7.3 dan versi lebih baru, Anda dapat mengatur parameter PersistentConnect.mNotifyReceivedMsgOnMainThread ke false untuk mentransmisikan data downstream di thread selain thread UI. Kami merekomendasikan agar Anda mengatur parameter PersistentConnect.mNotifyReceivedMsgOnMainThread ke false saat pesan downstream sering ditransmisikan atau thread UI kelebihan beban.

  • Saklar Log

    Aktifkan saklar keluaran log internal SDK untuk Android:

    PersistentNet.getInstance().openLog(true);
    ALog.setLevel(ALog.LEVEL_DEBUG);
       
  • Dapatkan Nomor Versi SDK untuk Android:

    ALog.i(TAG, "sdk version = " + LinkKit.getInstance().getSDKVersion());

Menghubungkan ulang perangkat Android dengan cepat

Jika SDK untuk Android memutuskan koneksi perangkat dari IoT Platform, perangkat secara otomatis terhubung kembali ke IoT Platform setelah 65 detik. Jika Anda ingin menghubungkan kembali perangkat setelah interval kustom setelah pemutusan, Anda dapat melakukan langkah-langkah berikut untuk menghubungkan kembali perangkat:

  • Tentukan import com.aliyun.alink.linksdk.channel.core.persistent.PersistentNet; dan panggil fungsi PersistentNet.getInstance().reconnect();.

  • Jika Anda ingin menentukan interval rekoneksi kustom, Anda dapat memulai timer. Saat timer berakhir, panggil fungsi PersistentNet.getInstance().reconnect(); untuk menyambungkan kembali koneksi MQTT yang tertutup secara real-time.

Catatan penggunaan pada paket demo

  • Jika perangkat gagal diinisialisasi, Anda harus menginisialisasi ulang SDK. Jika perangkat terputus dari IoT Platform karena penyebab tertentu seperti kegagalan jaringan, SDK secara otomatis menyambungkan kembali perangkat ke IoT Platform.

  • Ubah parameter yang diperlukan dari file ./app/src/main/res/raw/deviceinfo dalam paket demo Link SDK untuk Android untuk menghubungkan perangkat ke IoT Platform. Konfigurasikan parameter yang ditandai sebagai Wajib dan gunakan nilai default untuk parameter yang ditandai sebagai Opsional. Tabel berikut menjelaskan parameter.

  • Parameter

    Deskripsi

    Verifikasi satu-sertifikat-per-perangkat

    Verifikasi satu-sertifikat-per-produk dengan pendaftaran awal

    Verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal

    productKey

    Pengenal unik yang dikeluarkan oleh IoT Platform untuk produk.

    Wajib

    Wajib

    Wajib

    deviceName

    Pengenal unik perangkat dalam produk.

    Wajib

    Wajib

    Wajib

    productSecret

    ProductSecret dari produk.

    Opsional

    Wajib

    Wajib

    deviceSecret

    DeviceSecret dari perangkat.

    Wajib

    Opsional

    Opsional

    registerType

    Verifikasi satu-sertifikat-per-produk tanpa pendaftaran awal atau dengan pendaftaran awal.

    Opsional

    Opsional

    Wajib. Atur nilainya ke regnwl.

    instanceId

    ID instance. Instance Enterprise Edition dan instance publik versi baru memiliki ID instance. Untuk informasi lebih lanjut, lihat Ikhtisar instance IoT Platform.

    Opsional

    Wajib

    Wajib

    mqttHost

    Titik akhir yang digunakan oleh perangkat untuk terhubung ke instance IoT Platform melalui MQTT.

    Wajib, kecuali untuk instance di wilayah China (Shanghai). Anda harus menentukan nama domain dan nomor port dalam titik akhir berdasarkan wilayah aktual Anda.

    • Jika Anda menghubungkan perangkat ke instance publik versi baru atau instance Enterprise Edition, buka halaman Detail Instance di konsol IoT Platform dan salin nomor port di halaman tersebut. Format: {instanceid}.mqtt.iothub.aliyuncs.com:8883

    • Jika Anda menghubungkan perangkat ke instance publik versi sebelumnya, tidak ada nomor port yang ditampilkan di halaman Detail Instance di konsol IoT Platform. Anda harus menentukan nomor port untuk titik akhir yang Anda salin dari halaman tersebut. Format:

      {YourProductKey}.iot-as-mqtt.{region}.aliyuncs.com:8883. Untuk informasi lebih lanjut, lihat Lihat titik akhir instance.