本文由嵌入式企鵝圈原創團隊成員Hunter_Zhu提供。
基於H5進行跨平臺應用開發是未來的趨勢,其具有跨平臺兼容、開發門檻低、運維難度低等優勢。phonegap、Dcloud等平臺已經實現了很多的應用案例。儘管當前各個平臺在硬件接口和接口效率上仍有亟待解決的問題,但相信會得到快速的迭代解決。物聯網應用一般要比傳統應用要顯得簡單一點,因此使用跨平臺開發達到原生體驗是一個極好的路徑。
機智雲基於apicloud跨平臺實現了接入和數據訪問接口。本文對其進行介紹,但原理對所有跨平臺開發均是適用的。
在”物聯網APP開發利器之APICloud”一文中已經介紹了APICloud平臺的使用和本地調試環境搭建,APICloud作爲跨平臺APP開發的工具實際是通過用一個通用接口來實現不同平臺的功能。因爲APICloud已經把通用接口到各個不同平臺的接口對應做好了,所以APICloud就用一份WEB代碼來跟各個平臺的瀏覽器整合編譯,並生成對應的平臺安裝包,例如安卓一個.apk,蘋果一個.ipa,即開發者只需要進行H5開發即可。
本篇文章將講解基於APCloud平臺的機智雲APP端開發的幾個要點,幫助大家對機智雲平臺下這種開發模式有快速深刻的認識。
一、APICloud平臺中添加gizWifiSDK模塊
gizWifiSDK模塊是機智雲平臺對APICloud功能的拓展,封裝了應用對接雲平臺以及和設備交互的接口實現,使得開發者能夠通過簡單的API接口調用即能夠完成相應的功能,例如:WiFi設備配網、設備綁定等功能。
在H5開發過程中,需要將模塊進行導入並且完成初始化:
api是由APCloud提供的一個基礎對象,對象中含有應用程序需要的一些基本方法和屬性,比如窗口操作等一些函數,通過api對象中的require方法來完成對模塊的加載,加載完成後通過gizwitsSDK.startWithAppID來完成SDK初始化。
二、在機智雲平臺中獲取APPID
開發者需要在機智雲平臺中完成項目創建——》應用配置——》添加新應用,完成後即可獲得相應的App ID以及App Secret,通過這些信息標註了一個應用,在接口調用中例如獲取手機驗證碼時需要用到這些信息。
三、用戶登陸、註冊功能
這是APP開發中必備的基本功能,機智雲提供三種登陸方式:實名登陸、匿名登陸以及第三方登陸三種方式,實名登陸的賬號信息可以通過手機號、郵箱以及普通用戶名進行註冊,匿名登陸允許用戶不進行賬號註冊一樣可以發現設備和控制設備,匿名用戶可以轉換爲手機用戶或普通用戶,第三方登陸支持百度、新浪、QQ進行登陸。
這裏簡單列舉一下實名方式的幾個接口:
1)獲取手機驗證碼(用於註冊或重置密碼):
2)註冊用戶:
3)用戶登陸:
用戶完成登陸後返回的信息包含了用戶uid以及登陸會話token,返回的這兩個參數在設備功能接口中需要使用,例如:設備綁定等操作的接口。
四、設備的基本操作功能
完成登陸後,我們接下來的工作和微信H5開發類似——要完成的就是獲取用戶綁定的設備列表——》訂閱監聽設備的狀態和事件——》進行設備讀寫操作。
1)獲取綁定設備列表:
調用這個接口所獲得結果根據手機的聯網狀態會分爲幾種:手機通過外網獲取到的是用戶已綁定的設備列表;手機在局域網內獲取到的是用戶已綁定的設備以及局域網內未綁定的設備(未綁定設備通過屬性isBind爲false標註);手機無網時,局域網未綁定設備會消失,但會保留之前已經獲取過的綁定設備。
獲得的每個設備的信息包括:
2)訂閱設備或解除訂閱:
這個方法涵蓋了兩個主要功能:訂閱設備與否、對局域網內的設備進行自動綁定。訂閱設備表明用戶關心這個設備的消息推送,同時如果該設備是用戶未綁定的設備,在訂閱的時候會自動進行設備綁定;解除訂閱設備即用戶不再關心設備的消息推送,解除訂閱的時候不會解綁設備。
另外,需要主要注意的是,這裏加載的是gizWifiDevice類,這一個類裏面的方法和設備的相關操作功能有關。
3)註冊設備狀態變化通知:
通過這個方法監聽設備的狀態變化,包括設備上下線、設備狀態、報警、故障信息,開發者通過提供回調函數來對上報的數據進行處理。
4)給設備發送控制指令:
設備需要在訂閱後,並且狀態爲可控的情況下,用戶才能夠對設備進行控制。SDK優先選擇局域網進行指令下發,如果不在局域網下,選擇的是遠程網絡。另外,在用戶下發控制設備指令後,設備會再次上報設備的狀態,這樣就形成一種閉環控制。
五、設備配網功能
設備提供兩種方式進行配網:SoftAP方式、AirLink方式,在使用配網接口的時候需要區分不同產商的模塊來完成配網,另外在配網成功後SDK會返回設備的mac、設備id以及所屬的產品id——因此開發者可以調用前面提到訂閱接口來完成局域網內設備綁定。
1)獲取手機連接的ssid:
手機必須先連接到配置的wifi路由下。
2)配置設備路由:
六、設備綁定
前面提到,局域網內的設備能夠通過訂閱接口(gizWifiDevice.setSubscribe)來完成綁定,除此以外還能夠通過另外一個接口來完成綁定:
通過這個接口進行綁定的一個情景就是將設備相關的mac信息記錄在二維碼中,由用戶通過應用的二維碼插件來完成掃描和讀取信息,然後進行設備綁定。在APICloud平臺中,我們可以載入scanner來完成二維碼掃描的功能:
機智雲提供的模塊包中不止以上提到的接口,以上只是從中抽取出了常用的和重要的進行簡要介紹,意在幫助大家對機智雲基於APICloud平臺下的APP開發有個快速和深刻的認識。更多的接口可以在APICloud平臺中搜索gizWifiSDK模塊的說明文檔進行查看。
更多嵌入式Linux和物聯網原創技術分享敬請關注微信公衆號:嵌入式企鵝圈