您當前所在的位置:
插件功能頁從小程序基礎庫版本 2.1.0 開始支持。
某些接口不能在插件中直接調用(如 wx.login),但插件開發者可以使用插件功能頁的方式來實現功能。目前,插件功能頁包括:
要使用插件功能頁,需要先激活功能頁特性,配置對應的功能頁函數,再使用 functional-page-navigator 組件跳轉到插件功能頁,從而實現對應的功能。詳情請參考下文。
開始開發之前,我們需要知道,插件功能頁是指 插件所有者小程序 中的一個特殊頁面。
插件所有者小程序,指的是與插件 AppID 相同的小程序。例如,“小程序示例”小程序開發了一個“小程序示例插件”,那么無論這個插件被哪個小程序使用,這個插件的 插件所有者小程序 都是“小程序示例”。下文中會繼續使用 插件所有者小程序 這個說法。
通常,在開始使用插件功能頁的時候,需要開啟兩個開發者工具窗口,其中一個打開插件項目,另一個打開插件所有者小程序的小程序項目。例如,一個打開“小程序示例插件”項目,另一個打開“小程序示例”項目。
這兩個窗口,前者用于編輯插件,后者用于編輯插件所有者小程序。下文中所有需要編輯插件所有者小程序的內容,都是在后者中進行。
要在插件中調用插件功能頁,需要先激活插件所有者小程序的功能頁特性。具體來說,在插件所有者小程序的 app.json 文件中添加 functionalPages 定義段,并令其值為 true ,例如:
代碼示例:
{
"functionalPages": {
"independent": true
}
}
目前,兼容舊式寫法:
{
"functionalPages": true
}
舊式寫法將在未來將被移除支持,未來將不能編譯上傳。
這兩種寫法的區別在于,新式的寫法 "independent": true 會使得插件功能頁的代碼獨立于其他代碼,這意味著插件功能頁可以被獨立下載、加載,具有更好的性能表現。但也同時使得插件功能頁目錄 functional-pages/ (支付功能頁會使用其中的文件)不能 require 這個目錄以外的文件(反之亦然:這個目錄以外的文件也不能調用這個目錄內的)。
注意,新增或改變這個字段時,需要這個小程序發布新版本,才能在正式環境中使用插件功能頁。
功能頁不能使用 wx.navigateTo 來進行跳轉,而是需要一個名為 functional-page-navigator 的組件。以獲取用戶信息為例,可以在插件中放置如下的 functional-page-navigator:
代碼示例:
<functional-page-navigator name="loginAndGetUserInfo" args="" version="develop" bind:success="loginSuccess">
<button>登錄到插件button>
functional-page-navigator>
用戶在點擊這個 navigator 時,會自動跳轉到插件所有者小程序的對應功能頁。功能頁會提示用戶進行登錄或其他相應的操作。操作結果會以組件事件的方式返回。
functional-page-navigator 的參數和詳細使用方法可以參考組件說明 。
從小程序基礎庫版本 2.4.0 開始,支持插件所有者小程序跳轉到自己的功能頁。在基礎庫版本低于 2.4.0 時,點擊跳轉到自己的功能頁的 functional-page-navigator 將沒有任何反應。
目前,功能頁的跳轉目前不支持在開發者工具中調試,請在真機上測試。初次進行真機開發測試時,通常步驟如下:
注意:functional-page-navigator 的 version=develop 僅用于調試,因此在插件提審前,需要:
用戶信息功能頁用于幫助插件獲取用戶信息,包括 openid 和昵稱等,相當于 wx.login 和 wx.getUserInfo 的功能。
此外,自基礎庫版本 2.3.1 起,用戶在這個功能頁中授權之后,插件就可以直接調用 wx.login 和 wx.getUserInfo 。無需再次進入功能頁獲取用戶信息。自基礎庫版本 2.6.3 起,可以使用 wx.getSetting 來查詢用戶是否授權過。
用戶信息功能頁使用 functional-page-navigator 進行跳轉時,對應的參數 name 應為固定值 loginAndGetUserInfo,其余參數與 wx.getUserInfo 相同,具體來說:
args參數說明:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
withCredentials | Boolean | 否 | 是否帶上登錄態信息 |
lang | String | 否 | 指定返回用戶信息的語言,zh_CN 簡體中文,zh_TW 繁體中文,en 英文。默認為en。 |
timeout | Number | 否 | 超時時間,單位 ms |
注:當 withCredentials 為 true 時,返回的數據會包含 encryptedData, iv 等敏感信息。
bindsuccess返回參數說明:
參數 | 類型 | 說明 |
---|---|---|
code | String | 同 wx.login 獲得的用戶登錄憑證(有效期五分鐘)。開發者需要在開發者服務器后臺調用 api,使用 code 換取 openid 和 session_key 等信息 |
errMsg | String | 調用結果 |
userInfo | OBJECT | 用戶信息對象,不包含 openid 等敏感信息 |
rawData | String | 不包括敏感信息的原始數據字符串,用于計算簽名。 |
signature | String | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校驗用戶信息,參考文檔 signature。 |
encryptedData | String | 包括敏感數據在內的完整用戶信息的加密數據,詳細見加密數據解密算法 |
iv | String | 加密算法的初始向量,詳細見加密數據解密算法 |
userInfo參數說明:
參數 | 類型 | 說明 |
---|---|---|
nickName | String | 用戶昵稱 |
avatarUrl | String | 用戶頭像,最后一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表132*132正方形頭像),用戶沒有頭像時該項為空。若用戶更換頭像,原有頭像URL將失效。 |
gender | String | 用戶的性別,值為1時是男性,值為2時是女性,值為0時是未知 |
city | String | 用戶所在城市 |
province | String | 用戶所在省份 |
country | String | 用戶所在國家 |
language | String | 用戶的語言,簡體中文為zh_CN |
代碼示例:
<functional-page-navigator
name="loginAndGetUserInfo"
args="{{ args }}"
version="develop"
bind:success="loginSuccess"
bind:fail="loginFail"
>
<button class="login">登錄到插件button>
functional-page-navigator>
// plugin/components/hello-component.js
Component({
properties: {},
data: {
args: {
withCredentials: true,
lang: 'zh_CN'
}
},
methods: {
loginSuccess: function (res) {
console.log(res.detail);
},
loginFail: function (res) {
console.log(res);
}
}
});
用戶點擊該 navigator 后,將跳轉到如下的用戶信息功能頁:
在微信開發者工具中查看示例:
支付功能頁用于幫助插件完成支付,相當于 wx.requestPayment 的功能。
需要注意的是:插件使用支付功能,需要進行額外的權限申請,申請位置位于管理后臺的“小程序插件 -> 基本設置 -> 支付能力”設置項中。另外,無論是否通過申請,主體為個人小程序在使用插件時,都無法正常使用插件里的支付功能。
支付功能頁使用 functional-page-navigator 進行跳轉時,對應的參數 name 應為固定值 requestPayment,其他參數如下:
args參數說明:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
fee | Number | 是 | 需要顯示在頁面中的金額,單位為分 |
paymentArgs | Object | 否 | 任意數據,傳遞給功能頁中的響應函數 |
currencyType | String | 否 | 需要顯示在頁面中的貨幣符號的代碼,默認為 CNY |
currencyType 的合法值:
2020-11-08 09:11:56
瀏覽: 6792
插件功能頁從小程序基礎庫版本 2.1.0 開始支持。
某些接口不能在插件中直接調用(如 wx.login),但插件開發者可以使用插件功能頁的方式來實現功能。目前,插件功能頁包括:
要使用插件功能頁,需要先激活功能頁特性,配置對應的功能頁函數,再使用 functional-page-navigator 組件跳轉到插件功能頁,從而實現對應的功能。詳情請參考下文。
開始開發之前,我們需要知道,插件功能頁是指 插件所有者小程序 中的一個特殊頁面。
插件所有者小程序,指的是與插件 AppID 相同的小程序。例如,“小程序示例”小程序開發了一個“小程序示例插件”,那么無論這個插件被哪個小程序使用,這個插件的 插件所有者小程序 都是“小程序示例”。下文中會繼續使用 插件所有者小程序 這個說法。
通常,在開始使用插件功能頁的時候,需要開啟兩個開發者工具窗口,其中一個打開插件項目,另一個打開插件所有者小程序的小程序項目。例如,一個打開“小程序示例插件”項目,另一個打開“小程序示例”項目。
這兩個窗口,前者用于編輯插件,后者用于編輯插件所有者小程序。下文中所有需要編輯插件所有者小程序的內容,都是在后者中進行。
要在插件中調用插件功能頁,需要先激活插件所有者小程序的功能頁特性。具體來說,在插件所有者小程序的 app.json 文件中添加 functionalPages 定義段,并令其值為 true ,例如:
代碼示例:
{
"functionalPages": {
"independent": true
}
}
目前,兼容舊式寫法:
{
"functionalPages": true
}
舊式寫法將在未來將被移除支持,未來將不能編譯上傳。
這兩種寫法的區別在于,新式的寫法 "independent": true 會使得插件功能頁的代碼獨立于其他代碼,這意味著插件功能頁可以被獨立下載、加載,具有更好的性能表現。但也同時使得插件功能頁目錄 functional-pages/ (支付功能頁會使用其中的文件)不能 require 這個目錄以外的文件(反之亦然:這個目錄以外的文件也不能調用這個目錄內的)。
注意,新增或改變這個字段時,需要這個小程序發布新版本,才能在正式環境中使用插件功能頁。
功能頁不能使用 wx.navigateTo 來進行跳轉,而是需要一個名為 functional-page-navigator 的組件。以獲取用戶信息為例,可以在插件中放置如下的 functional-page-navigator:
代碼示例:
<functional-page-navigator name="loginAndGetUserInfo" args="" version="develop" bind:success="loginSuccess">
<button>登錄到插件button>
functional-page-navigator>
用戶在點擊這個 navigator 時,會自動跳轉到插件所有者小程序的對應功能頁。功能頁會提示用戶進行登錄或其他相應的操作。操作結果會以組件事件的方式返回。
functional-page-navigator 的參數和詳細使用方法可以參考組件說明 。
從小程序基礎庫版本 2.4.0 開始,支持插件所有者小程序跳轉到自己的功能頁。在基礎庫版本低于 2.4.0 時,點擊跳轉到自己的功能頁的 functional-page-navigator 將沒有任何反應。
目前,功能頁的跳轉目前不支持在開發者工具中調試,請在真機上測試。初次進行真機開發測試時,通常步驟如下:
注意:functional-page-navigator 的 version=develop 僅用于調試,因此在插件提審前,需要:
用戶信息功能頁用于幫助插件獲取用戶信息,包括 openid 和昵稱等,相當于 wx.login 和 wx.getUserInfo 的功能。
此外,自基礎庫版本 2.3.1 起,用戶在這個功能頁中授權之后,插件就可以直接調用 wx.login 和 wx.getUserInfo 。無需再次進入功能頁獲取用戶信息。自基礎庫版本 2.6.3 起,可以使用 wx.getSetting 來查詢用戶是否授權過。
用戶信息功能頁使用 functional-page-navigator 進行跳轉時,對應的參數 name 應為固定值 loginAndGetUserInfo,其余參數與 wx.getUserInfo 相同,具體來說:
args參數說明:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
withCredentials | Boolean | 否 | 是否帶上登錄態信息 |
lang | String | 否 | 指定返回用戶信息的語言,zh_CN 簡體中文,zh_TW 繁體中文,en 英文。默認為en。 |
timeout | Number | 否 | 超時時間,單位 ms |
注:當 withCredentials 為 true 時,返回的數據會包含 encryptedData, iv 等敏感信息。
bindsuccess返回參數說明:
參數 | 類型 | 說明 |
---|---|---|
code | String | 同 wx.login 獲得的用戶登錄憑證(有效期五分鐘)。開發者需要在開發者服務器后臺調用 api,使用 code 換取 openid 和 session_key 等信息 |
errMsg | String | 調用結果 |
userInfo | OBJECT | 用戶信息對象,不包含 openid 等敏感信息 |
rawData | String | 不包括敏感信息的原始數據字符串,用于計算簽名。 |
signature | String | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校驗用戶信息,參考文檔 signature。 |
encryptedData | String | 包括敏感數據在內的完整用戶信息的加密數據,詳細見加密數據解密算法 |
iv | String | 加密算法的初始向量,詳細見加密數據解密算法 |
userInfo參數說明:
參數 | 類型 | 說明 |
---|---|---|
nickName | String | 用戶昵稱 |
avatarUrl | String | 用戶頭像,最后一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表132*132正方形頭像),用戶沒有頭像時該項為空。若用戶更換頭像,原有頭像URL將失效。 |
gender | String | 用戶的性別,值為1時是男性,值為2時是女性,值為0時是未知 |
city | String | 用戶所在城市 |
province | String | 用戶所在省份 |
country | String | 用戶所在國家 |
language | String | 用戶的語言,簡體中文為zh_CN |
代碼示例:
<functional-page-navigator
name="loginAndGetUserInfo"
args="{{ args }}"
version="develop"
bind:success="loginSuccess"
bind:fail="loginFail"
>
<button class="login">登錄到插件button>
functional-page-navigator>
// plugin/components/hello-component.js
Component({
properties: {},
data: {
args: {
withCredentials: true,
lang: 'zh_CN'
}
},
methods: {
loginSuccess: function (res) {
console.log(res.detail);
},
loginFail: function (res) {
console.log(res);
}
}
});
用戶點擊該 navigator 后,將跳轉到如下的用戶信息功能頁:
在微信開發者工具中查看示例:
支付功能頁用于幫助插件完成支付,相當于 wx.requestPayment 的功能。
需要注意的是:插件使用支付功能,需要進行額外的權限申請,申請位置位于管理后臺的“小程序插件 -> 基本設置 -> 支付能力”設置項中。另外,無論是否通過申請,主體為個人小程序在使用插件時,都無法正常使用插件里的支付功能。
支付功能頁使用 functional-page-navigator 進行跳轉時,對應的參數 name 應為固定值 requestPayment,其他參數如下:
args參數說明:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
fee | Number | 是 | 需要顯示在頁面中的金額,單位為分 |
paymentArgs | Object | 否 | 任意數據,傳遞給功能頁中的響應函數 |
currencyType | String | 否 | 需要顯示在頁面中的貨幣符號的代碼,默認為 CNY |
currencyType 的合法值:
相關設計案例
相關網站設計案例
建站資訊