值得信赖的彩票平台

QQ小程序 開發插件

開發插件前,請發郵件至 qq-miniprogram@tencent.com 申請插件開發權限,郵件內容包括:

【標題】QQ小程序插件開發申請
【內容】
插件名稱:
Appid:
插件用途:

創建插件項目

開發小程序插件需要一個appid,申請步驟同小程序一致,添加項目的步驟也與小程序一致。 小程序插件目錄一般包括以下三個:

  • miniprogram 目錄: 放置一個小程序項目,用于調試插件
  • plugin 目錄: 插件源碼
  • doc 目錄: 用于放置插件開發文檔
  • miniprogram 目錄內容可以當成普通小程序來編寫,用于小程序插件調試和預覽。

插件目錄結構

一個插件可以包含若干個自定義組件、頁面,和一組 js 接口。插件的目錄內容如下:

plugin
├── components
│   ├── hello-component.js   // 插件提供的自定義組件(可以有多個)
│   ├── hello-component.json
│   ├── hello-component.wxml
│   └── hello-component.wxss
├── pages
│   ├── hello-page.js        // 插件提供的頁面(可以有多個)
│   ├── hello-page.json
│   ├── hello-page.wxml
│   └── hello-page.wxss
├── index.js                 // 插件的 js 接口
└── plugin.json              // 插件配置文件
插件配置文件

插件配置文件

向第三方小程序開放的所有自定義組件、頁面和 js 接口都必須在插件配置文件 plugin.json 列出,格式如下:

{
  "publicComponents": {
    "hello-component": "components/hello-component"
  },
  "pages": {
    "hello-page": "pages/hello-page"
  },
  "main": "index.js"
}

這個配置文件將向第三方小程序開放一個自定義組件 hello-component,一個頁面 hello-pageindex.js 下導出的所有 js 接口。

進行插件開發

請注意:在插件開發中,只有部分接口可以直接調用。

自定義組件

插件可以定義若干個自定義組件,這些自定義組件都可以在插件內相互引用。但提供給第三方小程序使用的自定義組件必須在配置文件的 publicComponents 段中列出(參考上文)。

除去接口限制以外,自定義組件的編寫和組織方式與一般的自定義組件相同,每個自定義組件由 wxml, wxss, js 和 json 四個文件組成。具體可以參考自定義組件的文檔。

頁面 插件可以定義若干個插件頁面,可以從本插件的自定義組件、其他頁面中跳轉,或從第三方小程序中跳轉。所有頁面必須在配置文件的 pages 段中列出(參考上文)。 除去接口限制以外,插件的頁面編寫和組織方式與一般的頁面相同,每個頁面由 wxml, wxss, js 和 json 四個文件組成。具體可以參考其他關于頁面的文檔。 插件執行頁面跳轉的時候,可以使用 navigator 組件。當插件跳轉到自身頁面時, url 應設置為這樣的形式:plugin-private://PLUGIN_APPID/PATH/TO/PAGE。需要跳轉到其他插件時,也可以這樣設置 url 。

<navigator url="plugin-private://qqidxxxxxxxxxxxxxx/pages/hello-page">
  Go to pages/hello-page!
</navigator>

在插件自身的頁面中,插件還可以調用 qq.navigateTo 來進行頁面跳轉, url 格式與使用 navigator 組件時相仿。

接口

插件可以在接口文件(在配置文件中指定,詳情見上文)中 export 一些 js 接口,供插件的使用者調用,如:

module.exports = {
  hello: function() {
    console.log('Hello plugin!')
  }
}

預覽、上傳和發布

插件可以像小程序一樣預覽和上傳,但插件沒有體驗版。 插件會同時有多個線上版本,由使用插件的小程序決定具體使用的版本號。 手機預覽和提審插件時,會使用一個特殊的小程序來套用項目中 miniprogram 文件夾下的小程序,從而預覽插件。

插件開發文檔

在第三方小程序使用插件時,插件代碼并不可見。因此,除了插件代碼,我們還支持插件開發者上傳一份插件開發文檔。這份開發文檔將展示在插件詳情頁,供其他開發者在瀏覽插件和使用插件時進行閱讀和參考。插件開發者應在插件開發文檔中對插件提供的自定義組件、頁面、接口等進行必要的描述和解釋,方便第三方小程序正確使用插件。 插件開發文檔必須放置在插件項目根目錄中的 doc 目錄下,目錄結構如下

doc
├── README.md   // 插件文檔,應為 markdown 格式

編輯 README.md 之后,可以使用開發者工具打開 README.md,并在編輯器的右下角預覽插件文檔和單獨上傳插件文檔。上傳文檔后,立刻發布。

其他注意事項

插件間互相調用

插件不能直接引用其他插件。但如果小程序引用了多個插件,插件之間是可以互相調用的。 一個插件調用另一個插件的方法,與插件調用自身的方法類似。可以使用 plugin-private://APPID 訪問插件的自定義組件、頁面(暫不能使用 plugin:// )。對于 js 接口,可使用 requirePlugin 。

插件請求簽名

插件在使用 qq.request 等 API 發送網絡請求時,將會額外攜帶一個簽名 HostSign ,用于驗證請求來源于小程序插件。這個簽名位于請求頭中,形如:

X-WECHAT-HOSTSIGN: {"noncestr":"NONCESTR", "timestamp":"TIMESTAMP", "signature":"SIGNATURE"}

其中,NONCESTR 是一個隨機字符串,TIMESTAMP 是生成這個隨機字符串和 SIGNATUREUNIX 時間戳。它們是用于計算簽名 SIGNATRUE 的參數,簽名算法為:

SIGNATURE = sha1([APPID, NONCESTR, TIMESTAMP, TOKEN].sort().join(''))

其中,APPID 是 所在小程序 的 AppId(可以從請求頭的 referrer 中獲得);TOKEN 是插件 Token,可以在小程序插件基本設置中找到。 網絡請求的 referer 格式固定為 https://appservice.qq.com/{appid}/{version}/page-frame.html,其中 {appid} 為小程序的 appid,{version} 為小程序的版本號,版本號為 0 表示為開發版、體驗版以及審核版本,版本號為 devtools 表示為開發者工具,其余為正式版本。 插件開發者可以在服務器上按以下步驟校驗簽名:

  1. sort 對 APPID NONCESTR TIMESTAMP TOKEN 四個值表示成字符串形式,按照字典序排序(同 JavaScript 數組的 sort 方法);
  2. join 將排好序的四個字符串直接連接在一起;
  3. 對連接結果使用 sha1 算法,其結果即 SIGNATURE 。 在小程序運行期間,若網絡狀況正常, NONCESTR 和 TIMESTAMP 會每 10 分鐘變更一次。如有必要,可以通過判斷 TIMESTAMP 來確定當前簽名是否依舊有效。
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號

意見反饋
返回頂部
值得信赖的彩票平台

              岑巩县| 阳山县| 正蓝旗| 惠州市| 新竹市| 依安县| 夏津县| 泊头市| 吉木乃县| 庆云县| 华安县| 迭部县| 健康| 台山市| 肇庆市| 化州市| 长岛县| 天峻县|