Demo App主要介紹App的開發(fā)流程,以及App的業(yè)務(wù)邏輯。在您開發(fā)自己的App前,建議您按照本文檔完成Demo App的操作。
前提條件
- 已在生活物聯(lián)網(wǎng)平臺創(chuàng)建了對應(yīng)的產(chǎn)品,并完成產(chǎn)品功能定義、配置App等相關(guān)操作。
- 已在生活物聯(lián)網(wǎng)平臺創(chuàng)建了一個(gè)自有品牌App,并完成Demo App的源碼下載。詳細(xì)操作請參見創(chuàng)建自有App。
DemoApp 源碼結(jié)構(gòu)說明
App模塊負(fù)責(zé)應(yīng)用的業(yè)務(wù)邏輯,其中包括了Demo對應(yīng)的功能演示:設(shè)備本地發(fā)現(xiàn)、設(shè)備配網(wǎng)、設(shè)備綁定和設(shè)備狀態(tài)的獲取和控制功能。java/com/aliyun/iot的詳細(xì)子目錄介紹如下。
- ilop/startpage: 演示了如何自定義國家選擇頁面
- ilop/demo/SDKInitHelper.java:演示了使用統(tǒng)一接口初始化各種SDK
- aep/oa:演示了如何自定義手機(jī)區(qū)域碼選擇頁面
- aep/sdk/receiver:演示了如何利用廣播接收器處理推送消息和通知
- ilop/demo/page/login3rd下
- AuthCodeFragment.java:演示了如何用三方賬號進(jìn)行授權(quán)登錄
- OALoginActivity.java:演示了如何自定義登錄頁面
運(yùn)行Demo App
介紹通過Android Studio導(dǎo)入Demo App,并構(gòu)建APK的操作。
- 打開Android Studio,選擇,導(dǎo)入Demo App源碼。
- 集成安全圖片,操作請參見集成安全圖片。
說明 安全圖片請勿重命名,否則會(huì)導(dǎo)致SDK初始化失敗。請您下載后直接放到App代碼工程下。
- (可選)Demo App中添加攝像頭設(shè)備。
- 打開Demo App工程,在build.gradle中找到dependencies,添加Link Visual面板的引用。
implementation project(':ipcview')
- 解注釋Link Visual面板初始化代碼。
在src\main\java\com\aliyun\iot\ilop\demo\DemoApplication.java中,去掉以下代碼前的注釋符。
IPCViewHelper.getInstance().init(this,"2.0.0");
- 解注釋跳轉(zhuǎn)Link Visual的代碼。
在src\main\java\com\aliyun\iot\ilop\demo\page\ilopmain\HomeTabFragment.java中,去掉以下代碼前的注釋符。
Intent intent = new Intent(getActivity(), IPCameraActivity.class);
intent.putExtra("iotId", iotId);
intent.putExtra("appKey", EnvConfigure.getEnvArg(EnvConfigure.KEY_APPKEY));
startActivity(intent);
- 替換產(chǎn)品的ProductKey。
將src\main\java\com\aliyun\iot\ilop\demo\page\ilopmain\HomeTabFragment.java中,示例ProductKey替換為自己產(chǎn)品的ProductKey。
- 在Demo App目錄下,執(zhí)行以下命令構(gòu)建APK。
./gradlew clean build
說明
- 請配置JDK為1.8版本。
- 3.0.0版本的打包插件,需要 Android Studio 3.0以上的版本支持。
- 3.0.0版本的打包插件,目前需要訪問Google的倉庫,請注意網(wǎng)絡(luò)環(huán)境。
Demo App業(yè)務(wù)邏輯介紹
默認(rèn)Demo App配置為官方項(xiàng)目和默認(rèn)支持的幾類設(shè)備。
- 選擇國家/地區(qū)。
登錄之前您須先選擇登錄國家/地區(qū)。
說明 如果您需要在國內(nèi)/海外區(qū)域之間切換,切換后需重啟App以生效。
- 注冊或登錄賬號。
App啟動(dòng)后會(huì)顯示如下登錄頁界面。
- 單擊免費(fèi)注冊,彈出注冊方式。
- 輸入要注冊的手機(jī)號碼或郵箱,并單擊下方發(fā)送短信校驗(yàn)碼。
- 輸入收到的校驗(yàn)碼,單擊下一步。
- 設(shè)置密碼完成登錄。
- 切換App的語言。
在中切換App的語言,界面如下圖所示。
說明 切換App語言后將跳轉(zhuǎn)到登錄界面,用戶需要重新登錄后才生效。
- 設(shè)置調(diào)試界面。
ebugTabFragment調(diào)試界面,調(diào)用com.aliyun.iot.ilop.demo.view.DebugLayout布局,提供以下功能。
- API通道:API網(wǎng)管調(diào)試
- 長鏈接通道:長鏈接通道調(diào)試
- 賬號和用戶:登錄、退出
- 移動(dòng)推送SDK:可以查看AppKey、ClientID、DeviceID等信息
BoneMobile插件調(diào)試分為:
- 開發(fā)環(huán)境、生產(chǎn)環(huán)境切換
- 本地調(diào)試
- 控制虛擬設(shè)備。
- 進(jìn)入主界面,如下圖所示。
如果直接掃碼下載demoAPP體驗(yàn),登錄后會(huì)默認(rèn)創(chuàng)建5個(gè)虛擬設(shè)備。
如果是下載代碼編譯運(yùn)行,上面顯示的5個(gè)虛擬設(shè)備,并不是默認(rèn)創(chuàng)建的,需要自己更改代碼,在HomeTabFragment里面,將自己項(xiàng)目內(nèi)創(chuàng)建的產(chǎn)品productKey填入下面的pks,再編譯運(yùn)行,才可以創(chuàng)建和體驗(yàn)虛擬設(shè)備。
/**
* 將自己項(xiàng)目內(nèi)的pk填入,可以體驗(yàn)虛擬設(shè)備
*/
//String[] pks = new String[]{"a1AzoSi5TMc", "a1B6cFQldpm", "a1XoFUJWkPr", "a1nZ7Kq7AG1", "a1OX20YJSLk"};
String[] pks = new String[]{};
- 單擊任意一個(gè)設(shè)備,進(jìn)入相應(yīng)的設(shè)備面板界面。
- 添加設(shè)備。
- 單擊首頁右上角加號。
- 選擇待添加的設(shè)備,進(jìn)入添加設(shè)備界面。
添加設(shè)備支持以下兩種方式。
- 通過產(chǎn)品列表的形式進(jìn)行配置(如上圖支持添加的設(shè)備)
- 通過本地網(wǎng)絡(luò)發(fā)現(xiàn)的設(shè)備,或者有支持零配配網(wǎng)方案的設(shè)備,如上圖本地發(fā)現(xiàn)設(shè)備(如果能發(fā)現(xiàn)到本地設(shè)備,則會(huì)自動(dòng)顯示出來)。
說明 通過產(chǎn)品列表添加需要使用官方項(xiàng)目對應(yīng)的接入產(chǎn)品,這一步目前并沒有真實(shí)設(shè)備可以使用;如果想體驗(yàn)這個(gè)流程,建議通過自主研發(fā)App的形式來完成。
虛擬創(chuàng)建產(chǎn)品的設(shè)備
在沒有真實(shí)設(shè)備可以走通鏈路的情況下,可以使用虛擬設(shè)備進(jìn)行體驗(yàn)和開發(fā)。下面介紹如何為您創(chuàng)建的產(chǎn)品虛擬設(shè)備。
- 打開Demo工程com/aliyun/iot/ilop/demo/page/ilopmain/下的HomeTabFragment.java文件。
- 查找關(guān)鍵字
pks
,快速定位待修改的位置。
//注冊虛擬設(shè)備
Set<String> set = new HashSet<String>();
ArrayList<String> deviceStrList = new ArrayList<>();
for (DeviceInfoBean deviceInfoBean : deviceInfoBeanList) {
set.add(deviceInfoBean.getProductKey());
deviceStrList.add(deviceInfoBean.getProductKey() + deviceInfoBean.getDeviceName());
}
mBundle.putStringArrayList("deviceList", deviceStrList);
//noinspection MismatchedReadAndWriteOfArray
String[] pks = new String[]{/*"a1xxxxc", "a1xxxxxm", "a1xxxxr", "a1xxxx1", "a1xxxxk"*/};
mRegisterCount = 0;
mVirtualCount = 0;
//noinspection RedundantOperationOnEmptyContainer
for (String pk : pks) {
if (set.add(pk)) {
mRegisterCount++;
//registerVirtualDevice(pk);
addVirtualDevice(pk);
}
}
- 在控制臺上獲取待體驗(yàn)產(chǎn)品的productKey。
- 替換productKey。
將
String[] pks = new String[]{/*"a1xxxxc", "a1xxxxxm", "a1xxxxr", "a1xxxx1", "a1xxxxk"*/};
中的默認(rèn)的productKey替換為自己產(chǎn)品的productKey,示例如下。
String[] pks = new String[]{/*"xxxx", "xxxxx"*/};
說明 每個(gè)產(chǎn)品可以申請1個(gè)虛擬設(shè)備,多個(gè)產(chǎn)品productKey之間用逗號間隔。
- 重新登錄App,即可使用虛擬設(shè)備體驗(yàn)?zāi)鷦?chuàng)建的產(chǎn)品的控制。