百度智能小程序 App

2020-09-03 16:11 更新

解釋: App 函數(shù)用來注冊一個智能小程序。接受一個 Object 作為參數(shù),用以指定智能小程序的生命周期函數(shù)等。

注: App 函數(shù)必須在 app.js 中被調(diào)用一次。該函數(shù)在整個小程序中不能被調(diào)用多次,否則會出現(xiàn)無法預(yù)期的后果。

Web 態(tài)說明:

由于 Web 態(tài)框架暫不支持當(dāng)前是否進(jìn)入前、后臺的狀態(tài)檢測,因此在下列場景中,App.onShow、App.onHide 生命周期無法觸發(fā)

  • 當(dāng) Web 態(tài)小程序從后臺切換至前臺時,如從任務(wù)管理器進(jìn)入、或關(guān)閉顯示在上層的語音助手等,App.onShow 生命周期無法觸發(fā)
  • 由于 Web 態(tài)框架暫不支持當(dāng)前是否進(jìn)入前、后臺的狀態(tài)檢測,因此 Web 態(tài)小程序暫不支持 App.onHide 生命周期

參數(shù)

Object object:

屬性 類型 默認(rèn)值 描述 觸發(fā)時機 Web 態(tài)說明
onLogin Function 生命周期函數(shù) -- 監(jiān)聽 Web 態(tài)小程序登錄成功( Web 態(tài)小程序獨有) 當(dāng)小程序初次登錄成功后,會觸發(fā) onLogin (全局只觸發(fā)一次)。 僅在 Web 態(tài)小程序中有效,百度 APP 端內(nèi)小程序此生命周期不會觸發(fā)
onLaunch Function 生命周期函數(shù) -- 監(jiān)聽小程序的初始化 。 當(dāng)小程序初始化完成時,會觸發(fā) onLaunch (全局只觸發(fā)一次)。
onShow Function 生命周期函數(shù) -- 監(jiān)聽小程序的顯示 。 當(dāng)小程序初始化,或從后臺進(jìn)入前臺顯示,會觸發(fā) onShow 。 僅在小程序初始化時觸發(fā)
onHide Function 生命周期函數(shù) -- 監(jiān)聽小程序的隱藏 。 當(dāng)小程序從前臺進(jìn)入后臺,會觸發(fā) onHide。 暫不支持
onError Function 錯誤監(jiān)聽函數(shù)。 小程序發(fā)生腳本錯誤,或者 api 調(diào)用失敗時觸發(fā),會帶上錯誤信息。
onPageNotFound Function 頁面不存在監(jiān)聽函數(shù)。 小程序要打開的頁面不存在時觸發(fā),會帶上頁面信息回調(diào)該函數(shù)。
其他 Any 開發(fā)者可以添加任意的函數(shù)或者數(shù)據(jù)到 Object 參數(shù)中, 用 this 可以訪問。

onLogin 生命周期解釋

  • 使用 onLogin 生命周期的意義:Web 態(tài)小程序初次登錄成功后開發(fā)者能獲取登錄成功的 code。
  • 適用 onLogin 原因:與百度 APP 端內(nèi)小程序登錄不同(在小程序內(nèi)部登錄),Web 態(tài)的登錄需要跳轉(zhuǎn)百度登錄頁面進(jìn)行登錄,登錄成功后自動跳轉(zhuǎn)原頁面。該跳轉(zhuǎn)過程會導(dǎo)致 Web 態(tài)的原執(zhí)行上下文狀態(tài)丟失,從而無法通過 swan.login 的成功回調(diào)獲取登錄成功的 code。因此必須通過 onLogin 生命周期獲取該 code

名詞解釋:前臺、后臺:當(dāng)用戶點擊右上角的關(guān)閉,或者按了設(shè)備的 Home 鍵離開智能小程序,智能小程序沒有直接銷毀,而是進(jìn)入到了后臺;當(dāng)再次進(jìn)入智能小程序,又會從后臺進(jìn)入前臺。

注意:只有在以下情況小程序才可能會被動銷毀,參考運行機制:

  • 進(jìn)入后臺超過 5 分鐘;
  • 系統(tǒng)資源占用過高;
  • 打開小程序數(shù)量超過系統(tǒng)支持上限(系統(tǒng)按照小程序被打開的先后順序進(jìn)行銷毀)。

代碼示例

// app.js
App({
    onLogin(options) {
        // 使用 options.code 換取 session_key
        // 僅在 Web 態(tài)小程序初次登錄成功后會被觸發(fā)
    },
    onLaunch(options) {
        // Do something initial when launch.
    },
    onShow(options) {
        // Do something when show.
    },
    onHide() {
        // Do something when hide.
    },
    onError(errMsg) {
        console.log(errMsg); // 發(fā)生錯誤時,回調(diào)此方法并傳遞錯誤信息
    },
    globalData: 'This is global data'
});

onLogin(Object object)

  • 使用 onLogin 生命周期的意義:Web 態(tài)小程序初次登錄成功后開發(fā)者能獲取登錄成功的 code。
  • 添加 onLogin 生命周期的原因:與百度 APP 端內(nèi)小程序登錄不同(在小程序內(nèi)部登錄),Web 態(tài)的登錄需要跳轉(zhuǎn)百度登錄頁面進(jìn)行登錄,登錄成功后自動跳轉(zhuǎn)原頁面。該跳轉(zhuǎn)過程會導(dǎo)致 Web 態(tài)小程序的原執(zhí)行上下文狀態(tài)丟失,從而無法通過 swan.login 的成功回調(diào)獲取登錄成功的 code。因此必須通過 onLogin 生命周期獲取該 code。
字段 類型 說明
code String 登錄成功后的 code,用于換取 session_key

onLaunch(Object object)

小程序初始化完成時觸發(fā),全局只觸發(fā)一次。

字段 類型 說明
scene String 打開智能小程序的場景值,scene 值統(tǒng)一由百度小程序場景值管理中心在 B 端平臺統(tǒng)一配置后下發(fā)到宿主(例如百度 App),調(diào)起協(xié)議中會攜帶相應(yīng)入口的 scene 值。
path String 打開小程序的路徑。
query Object 打開當(dāng)前頁面路徑中的參數(shù)。
shareTicket String 標(biāo)記轉(zhuǎn)發(fā)對象。
referrerInfo Object 從另一個小程序打開該小程序時,返回此字段。
referrerInfo.appId String 來源小程序的 appKey。
referrerInfo.extraData Object 來源小程序傳過來的數(shù)據(jù)。

名詞解釋:

  • 場景值: 智能小程序被打開時,其來源渠道的標(biāo)識(例如: 從百度搜索結(jié)果打開、從百度信息流打開),開發(fā)者可以利用該字段統(tǒng)計小程序在什么場景下被打開,更多場景值;
  • 調(diào)起協(xié)議: 宿主(例如百度 App)用于識別一個小程序被打開時的初始化信息(例如:小程序的 appKey、path、query 等),由該類信息構(gòu)成的一個協(xié)議。

onShow(Object object)

小程序啟動,或從后臺進(jìn)入前臺顯示時觸發(fā)。也可以使用 swan.onAppShow 綁定監(jiān)聽。

參數(shù): 與 swan.onAppShow 一致

onHide()

小程序從前臺進(jìn)入后臺時觸發(fā)。也可以使用 swan.onAppHide 綁定監(jiān)聽。

onError(Object object)

小程序發(fā)生腳本錯誤或 API 調(diào)用報錯時觸發(fā)。也可以使用 swan.onError 綁定監(jiān)聽。

參數(shù): 與 swan.onError 一致

onPageNotFound(Object object)

小程序要打開的頁面不存在時觸發(fā)。也可以使用 swan.onPageNotFound 綁定監(jiān)聽。注意事項請參考 swan.onPageNotFound

參數(shù): 與 swan.onPageNotFound 一致

代碼示例

// app.js
App({
    onPageNotFound(res) {
        // 如果是 tabbar 頁面,請使用 swan.switchTab 進(jìn)行跳轉(zhuǎn)
        swan.redirectTo({
            url: 'path/to/otherPage'
        });
    }
});


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號