Zenbo的對話建立與載入 (apk 篇)
Step 0. 載入SDK
[0-1]:下載SDK
先至Zenbo Tool網站,點選下載SDK。
[0-2]:開啟Android Studio,打開並且載入ZenboDialogSample ,之後需要同步DDE與 src\main下manifest的資訊。
[0-3]:可載入 src\main\java的ZenboDialogSample.java 以及 src\main\res\layout的activity_zenbo_dialog_sample.xml修改您的sample邏輯與版型樣式
Step 1. 載入 Hello World Project
[1-1]: 首先打開 DDE , 先選取 Import Template Project。接著按下 Edit進入編輯畫面。(如果已經編輯過,直接選取Edit)
[1-2]:接著勾選Hello World,按下Add。
[1-3]:點選Edit開始編輯
Step 2: Register a domain UUID
[2-1] 點選 [Project], 在彈出的選單中選取 [Project Info].
[2-2] 點選 Register 註冊domain uuid.
[2-3] 填入 Domain Name and Domain Description, 接著點選 “Create”:
[2-4] 可點選 All 來查看所有開發者自己的已註冊ID資訊:
[2-5] 複製 UUID, 並且貼至 AndroidManifest.xml的domain UUID
需要注意的是, zenbo_ds_version 的value 要跟DDE相符,在此例子中是0.0.1。(DDE的Version可以在Project Center或者 Project Info查看)
[2-6] 如果使用Dialogue Sample,要記得更改domain uuid
[2-7] 填好DDE裡面的主要Project Info
Domain ID: 選取剛註冊好的uuid。
Version:可以為同domain建立不同version
DeveloperID: 開發者網站註冊,可見文章末Appendix教學,上架用。
Package Name: 根據Manifest的package填寫,要相同。
Brand:主要用來觸發起始句用,如同 [4-2]的用法
App Name: 主要用來觸發起始句用,如同 [4-2]的用法
Launch Activity: 根據Manifest的activity name填寫,要相同。
以上圖為例,可以填寫如下:
PackageName: com.asus.zenbodialogsample
Launch Activity: ZenboDialogSample
如果 The full path to launch this app有打勾
PackageName: com.asus.zenbodialogsample
Launch Activity: com.asus.zenbodialogsample.ZenboDialogSample (該Activiy的完整路徑)
假設目前僅為開發測試階段,可以不用填寫Developer App ID。可以先填入測試的package name,但因Zenbo依此來launch您的app,請務必確認要跟android studio的project相同。
若目前是準備將此APP放置商城,那就務必記得至開發者網站註冊App ID並且在Project Info裡面選擇 已註冊的Developer App ID。
step 3: Deploy DDE至 Zenbo
[3-1] 點選右上角Publish
[3-2]確認SLU Data Validation訊息正常後按下 Continue To Publish
[3-3]看到Publish成功
[3-4]按下 Dev -> Deploy to Downloader.
Deploy完成之後,你將會看到以下訊息
注意事項
完成[3-1] ~ [3-4]會讓APP的語句資料上傳至Download Server
[3-5]下載DS Tool(選填,已下載者不用下載)
[3-6]將DS tool APK放置於Zenbo裡點取安裝(選填,已安裝過不用重複安裝)
[3-7]安裝apk 到 zenbo(選填)
備註:假設非第一次更新語料可省略
[3-8]檢視DS Tool(以下編碼非順序,僅為對應圖檔位置)
-
Update by ID: 輸入APP的domain UUID並且按下按鈕來進行搜尋(32個亂數碼)
-
Update by Package Name:輸入Package Name並且按下按鈕進行搜尋
-
Set Server:選擇更新至哪個Server
-
Status Message: 顯示當下狀態:
-
Normal Update: 當為一般更新時,會檢查時否為最新版本,是的話才更新。若為強制模式,則無論如何都會更新。
(同樣的一個版本,假設版本名稱為 “V3”,當檢查到有更新的V3版本時,會進行更新。這邊所說 “更新的版本”,是依時間而定,而不是依版號而定。若是不同的版號,則不會有更新的動作,因此,假設目前的版本是 “V2”,只會更新“V2”最新的版本。在這種情況下,則不會進行更新V3最新版本。)
[3-9]填選你的package name 至 欄位裡
[3-10]按下”Upadate by PKG Name”即完成更新
[3-11]確認Error Code(如果沒有Error,省略此步驟)
Error Code
-
UUID check fail, reach max retry count, 可能server發生問題
-
UUID check fail, app not found on server, 通常可能是操作介面上輸入了錯誤的UUID,或apk中UUID與server上資料不一致導致找不到
-
請檢察DDE專案中的UUID,是否與APK中manifest中設定的UUID相符
-
-
Get server config fail, 可能server掛掉
-
Can not find package name by id, 可能app安裝失敗、或app id錯誤、或與填入的內容不匹配
-
請檢察是否已安裝apk,apk中manifest中設定的UUID是否與DDE專案中的UUID相符
-
-
Can not find app config by package name, 通常可能是apk內package name填錯
-
請檢察apk中的package name是否與DDE專案中設定的package name是否相符
-
-
Can not find DB data on server, 通常是package name 填錯、ds ver填錯、domain id找錯
-
請檢察輸入的package name與apk中manifest設定的package name以及DDE上所設定的package name是否相符
-
請檢察DDE上所設定的DS Version是否與apk中指定要使用的DS Version是否相同
-
請檢察apk中manifest設定的UUID是否與DDE上的UUID相符
-
-
Error happened while downloading app data, 通常是server問題導致下載失敗,不過不太會發生
-
Error happened while unzip app data, 解壓失敗但通常不會發生
-
Error happened while copy app data, 複製檔案失敗,通常不會發生
-
No such app id
[3-12]按下Show App Info確認有無多一個選項,內容為新加入apk 的 UUID
備註:
之後需要更新的時候可以直接點該選項,會自動把UUID填到左上方的Update by ID就不需要再填package name 或 UUID
重要事項:
第一次使用DS Tool時,務必先安apk後再使用Update by Package Name。也確實讓zenbo的manifest與apk一致。
step 4: 測試結果
[4-1]啟動Zenbo收聽
說hey zenbo啟動 Zenbo收聽
[4-2]啟動APP
在我們的hello world的sample之中,可以發現裡面的起始語句為
回到在步驟[2-6]中有介紹過的Project Info,填入 “華碩”至brand。並且確認App Name(編者在本次測試中設定為早安世界)。所以輸入”我要用華碩早安世界測試DDE”啟動App。你將會得到Plan ID “lanuchHelloWolrd_Plan” 並且會看到樣本 Project被啟動:
接著說 “哈囉黑色城市” 或者 “Hello Black City” 或者 “Hello White City”就會得到Plan ID以及DS系統給予的回應。
Appendix
-
如何註冊Developer ID
至開發者網站 https://zenbo.asus.com/developer/
點選Console至 App Key管理頁面
接著應該會看到下圖頁面
點選 “New an App” 來註冊一個新的app,並且會看到下圖頁面。
填寫與manifest相同的Package Name,並且填寫App Name 以及 Brand Name來建立該App在Zenbo上的起始句。最後SUBMIT完成。回到App Management之後再度點擊回剛剛建立的App會顯示以下畫面,
就有剛建立好的Developer APP ID。