<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aly.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
前言
如果咱自己做產品,APP端肯定是一個程序.
如果咱向前面章節似的自己去雲端注冊設備,然后再把設備的信息(三元組)給用戶,
然后用戶再填寫信息接入,這樣用戶體驗不好,過於繁瑣,也無疑增加了人工成本.
應該是用戶打開手機APP,然后APP自己去雲平台注冊一個設備,然后接入雲平台實現通信
動態注冊的方式(咱使用的是,一型一密(免預注冊))
先解釋幾個名詞:一機一密 ;一型一密(預注冊) ;一型一密(免預注冊)
一機一密:就是咱原先測試的在網頁上去注冊設備,然后把ProductKey、DeviceSecret、DeviceName
給設備,然后設備根據這三個信息組合計算下得到mqtt的連接參數,然后就連接通信了
https://help.aliyun.com/document_detail/74005.html?spm=a2c4g.11186623.6.585.3bb41114l1EN77
一型一密(預注冊):
需要咱先在網頁上注冊上設備,然后把ProductKey、ProductSecret、DeviceName
給設備,然后設備通過https或者mqtt獲取DeviceSecret
然后設備根據ProductKey、DeviceSecret、DeviceName這三個信息組合計算下得到mqtt的連接參數,然后就連接通信了
一型一密(免預注冊): 免預注冊就是不用在雲端自己注冊設備,設備連接上網絡以后設備自己去注冊.
這樣子的話,每個設備燒錄同樣的程序就可以,不用再配置什么三元組了!
不過每個設備程序里面的需要寫上產品的ProductKey 和 ProductSecret 的值,這兩個值是固定的.
主要是區分開你注冊的時候注冊到哪個產品下.
然后設備通過https或者mqtt接口注冊設備,
注冊的時候服務器會返回ClientID和DeviceToken 等參數
最后按照平台規定的組合MQTT參數
MQTT連接的方式注冊設備:
拼接注冊返回的參數連接MQTT:
測試本節一型一密(免預注冊)程序
1.打開本節的Android程序
2.登錄自己的雲平台查看自己產品的ProductSecret; ProductKey;
注:我前面的設備這個產品下設備,所以我也注冊到這個產品下.
3.打開動態注冊
4.點擊查看
5.替換自己的 ProductSecret; ProductKey;
6.下載安裝到手機
注:注冊的時候設備名字是可以自己規定的
7.輸入設備的名稱,然后點擊注冊設備
我寫的是 regapp
8.注冊成功以后自動跳轉到主頁面
9.用戶可以看下日志,和刷新下雲平台設備列表
源碼說明
1. 注冊設備我封裝成了一個java文件
按照阿里雲文檔組合計算注冊時的MQTT參數
需要SSL方式
接收mqtt返回的數據
2.調用注冊函數注冊設備
3.注冊完成跳轉到主頁面
4.主頁面如果判斷有注冊的信息執行連接MQTT程序
5.正常通信連接還是使用的以前封裝的java文件,把動態注冊返回的參數按照文檔的規定進行拼接計算.
結語
之所以我把注冊時的設備名稱拿出來,是因為咱后面可以和手機驗證碼結合.
用戶拿到手機APP之后用戶需要用手機號登錄注冊,然后呢設備的名字就用手機號代替.
注意: 產品的 ProductSecret 和 ProductKey 別泄露了哈!!!!!
如果讓別人知道了之后,別人也可以在你的平台上動態注冊設備並接入了!!!!