国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

feat:使用企業(yè)微信JS-SDK的onMenuShareAppMessage()實現(xiàn)點擊轉(zhuǎn)發(fā)自定義分享內(nèi)容(TypeScript)

這篇具有很好參考價值的文章主要介紹了feat:使用企業(yè)微信JS-SDK的onMenuShareAppMessage()實現(xiàn)點擊轉(zhuǎn)發(fā)自定義分享內(nèi)容(TypeScript)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景:企業(yè)微信應(yīng)用使用企業(yè)微信JS-SDK的分享接口實現(xiàn)分享樣式自定義
原生:
feat:使用企業(yè)微信JS-SDK的onMenuShareAppMessage()實現(xiàn)點擊轉(zhuǎn)發(fā)自定義分享內(nèi)容(TypeScript)
需要實現(xiàn)成:
feat:使用企業(yè)微信JS-SDK的onMenuShareAppMessage()實現(xiàn)點擊轉(zhuǎn)發(fā)自定義分享內(nèi)容(TypeScript)

企業(yè)微信JS-SDK 是企業(yè)微信面向網(wǎng)頁開發(fā)者提供的 基于企業(yè)微信內(nèi) 的網(wǎng)頁開發(fā)工具包。
通過使用企業(yè)微信JS-SDK,網(wǎng)頁開發(fā)者 可借助企業(yè)微信 高效地使用拍照、選圖、語音、位置等手機系統(tǒng)的能力,同時可以直接使用企業(yè)微信分享、掃一掃等企業(yè)微信特有的能力,為企業(yè)微信用戶提供更優(yōu)質(zhì)的網(wǎng)頁體驗。

傳送門:企微JS-SDK開發(fā)文檔

步驟一:引入JSSDK

<!-- 這里以jssdk1.2.0為例子,在html文件里引入jssdk -->
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

步驟二:通過config接口注入權(quán)限驗證配置

// 示例:
wx.config({
    beta: true,// 必須這么寫,否則wx.invoke調(diào)用形式的jsapi會有問題
    debug: true, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
    appId: '', // 必填,企業(yè)微信的corpID,必須是本企業(yè)的corpID,不允許跨企業(yè)使用
    timestamp: '', // 必填,生成簽名的時間戳
    nonceStr: '', // 必填,生成簽名的隨機串
    signature: '',// 必填,簽名,見 附錄-JS-SDK使用權(quán)限簽名算法
    jsApiList: [] // 必填,需要使用的JS接口列表,凡是要調(diào)用的接口都需要傳進來
});

這里的config里的內(nèi)容一般是請求后端獲取,舉個例子:

新建一個qwjssdk.ts文件或js文件,這里以Typescript為例,JavaScript類似。

  1. 提前將需要用到的api用一個數(shù)組存起來
const defaultApiSet = new Set([
  'onMenuShareAppMessage', // 獲取“轉(zhuǎn)發(fā)”按鈕點擊狀態(tài)及自定義分享內(nèi)容接口
])
/**
 * [getBrowserEnv 判斷當(dāng)前瀏覽器的環(huán)境,可忽略]
 * @return {[Object]}
 */
function getBrowserEnv(): {isWxWork: boolean, wxWorkVersion: string | null} {
  const ua = navigator.userAgent.toLowerCase()
  const isWxWork = /wxwork/i.test(ua) && /micromessenger/i.test(ua)
  // 獲取企業(yè)微信版本
  let wxWorkVersion = null
  if (ua.match(/wxwork\/(\S*)\s/)) {
    wxWorkVersion = (ua.match(/wxwork\/(\S*)\s/) as object)[1]
  }
  return {
    isWxWork,
    wxWorkVersion
  }
}
  1. 定義一個方法調(diào)用簽名接口和注冊配置信息

    getParams是請求后端接口,獲取簽名,返回來的參數(shù)可以與配置信息對應(yīng)上即可,一般返回(appId、timestamp、noncestr、signature)。具體可閱讀JS-SDK使用權(quán)限簽名算法。

    注意點: url的賦值

    為什么 url賦值 要使用encodeURIComponent()?
    :因為有個業(yè)務(wù)場景需要帶值為中文的請求參數(shù),所以這里需要先編碼再把url傳給簽名接口,否則不會走分享api。這里因項目而異。沒有作者這個業(yè)務(wù)場景的話可以直接將url賦值為window.location.href.split('#')[0]

// 請求接口獲取參數(shù)
async getParams() {
    const url = encodeURIComponent(window.location.href.split('#')[0]) // 注意點,因項目而已
    const res = await Api.getJssdkConfig({ launchUrl: url }) // 請求自己定義接口的方法
    if (res.code.value === 0) {
      return new Promise((resolve, reject) => {
        resolve(res.data.value)
      })
    }
  }
async initConfig() {
	const config:any = await this.getParams() 
	if (!config) {
		console.log('簽名失敗')
		return false
    }
    config.jsApiList = Array.from(defaultApiSet) // 將需要用到的api賦值給confi.JsAPIList
    await this.registeredConfig(config) // 去注冊,將注冊信息帶到注冊配置方法里面
}
  1. 注冊配置信息
// 注冊配置信息
registeredConfig(config) {
    console.log('registeredConfig config:>> ', config);
    window.wx.config({
      // 必須這么寫,否則wx.invoke調(diào)用形式的jsapi會有問題
      beta: true,
      // 開啟調(diào)試模式
      debug: false,
      // 必填,企業(yè)微信的corpID
      appId: config.appId,
      // 必填,生成簽名的時間戳
      timestamp: +config.timestamp,
      // 必填,生成簽名的隨機串
      nonceStr: config.noncestr,
      // 必填,簽名,見 附錄-JS-SDK使用權(quán)限簽名算法
      signature: config.signature,
      // 必填,需要使用的JS接口列表,凡是要調(diào)用的接口都需要傳進來
      jsApiList: config.jsApiList
    })
    return new Promise((resolve, reject) => {
      // 如果是企業(yè)微信端的情況下執(zhí)行,瀏覽器的情況下走else。不判斷的話可忽略此判斷。此方法在上面已經(jīng)寫了。
      if (getBrowserEnv().isWxWork) {
        window.wx.ready(() => {
          console.log('注冊成功', config)
          // config信息驗證后會執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來確保正確執(zhí)行。對于用戶觸發(fā)時才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。
          resolve(null)
        })
        window.wx.error(err => {
          // config信息驗證失敗會執(zhí)行error函數(shù),如簽名過期導(dǎo)致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數(shù)中查看,對于SPA可以在這里更新簽名。
          console.log('注冊失敗', err, config)
          reject(err)
        })
      } else {
        resolve(null)
      }
    })
  }

步驟三:封裝分享api

在公共方法文件里面封裝分享方法的調(diào)用。
這里就命名一個common.ts文件為例吧。

注意點:每次調(diào)用api都需要重新注冊一遍

每次調(diào)用api之前都需要調(diào)用前面寫的initConfig()重新注冊一遍配置信息。否則分享的樣式比如title、desc、imgUrl都會不生效。

// 引入qwjssdk文件,路徑自己決定
import qwjssdk from '~/utils/qwjssdk'
/**
 * 通過調(diào)用jssdk能力自定義分享內(nèi)容
 * */
export const wxShareAppMessage = async (shareObj: shareObj) => {
  await qwjssdk.initConfig() // 重點??!這里根據(jù)業(yè)務(wù)需求,需要每次更換路由都需要重新注冊一遍,否則分享出去的樣式不生效。
  if (!window.wx) {
    return
  }
  // 獲取“轉(zhuǎn)發(fā)”按鈕點擊狀態(tài)及自定義分享內(nèi)容接口
  window.wx.onMenuShareAppMessage({
    title: shareObj.title, // 分享標(biāo)題
    desc: shareObj.desc, // 分享描述
    link: shareObj.link, // 分享鏈接
    imgUrl: shareObj.imgUrl, // 分享圖標(biāo)
    success: function () {
      // 這里可以寫分享成功之后的邏輯
      console.log('SUCCESS onMenuShareAppMessage :>> ', shareObj);
    },
    error: (err)=>{
      // 這里可以寫分享失敗之后的邏輯
      console.log('ERR onMenuShareAppMessage :>> ', err);
    }
  });
}

這里只用到了success 和 error 的回調(diào),其他回調(diào)可以看下面這段官網(wǎng)的描述:

所有接口通過wx對象(也可使用jWeixin對象)來調(diào)用,參數(shù)是一個對象,除了每個接口本身需要傳的參數(shù)之外,還有以下通用參數(shù):
success:接口調(diào)用成功時執(zhí)行的回調(diào)函數(shù)。
fail:接口調(diào)用失敗時執(zhí)行的回調(diào)函數(shù)。
complete:接口調(diào)用完成時執(zhí)行的回調(diào)函數(shù),無論成功或失敗都會執(zhí)行。
cancel:用戶點擊取消時的回調(diào)函數(shù),僅部分有用戶取消操作的api才會用到。
trigger: 監(jiān)聽Menu中的按鈕點擊時觸發(fā)的方法,該方法僅支持Menu中的相關(guān)接口。
注意
不要嘗試在 trigger 中使用 Ajax 異步請求修改本次分享的內(nèi)容,因為客戶端分享操作是一個同步操作,這時候使用 Ajax 的回包會還沒有返回。
以上幾個函數(shù)都帶有一個參數(shù),類型為對象,其中除了每個接口本身返回的數(shù)據(jù)之外,還有一個通用屬性err_msg,其值格式如下:
調(diào)用成功時:“xxx:ok” ,其中xxx為調(diào)用的接口名
用戶取消時:“xxx:cancel”,其中xxx為調(diào)用的接口名
調(diào)用失敗時:其值為具體錯誤信息

步驟四:監(jiān)聽轉(zhuǎn)發(fā)按鈕

在業(yè)務(wù)代碼里面,引入封裝的api,這里就以index.vue舉例叭

import { wxShareAppMessage } from '~/utils/common'
/**
 *  調(diào)用分享api,實現(xiàn)分享自定義內(nèi)容
 */
const toShare = () => {
  shareData.value = {
    title: '搜索',
    desc: '搜索',
    link: window.location.href,
    imgUrl: 'xxxxxxxxx.png'
  }
  wxShareAppMessage(shareData.value)
}

toShare()  // 根據(jù)自身的業(yè)務(wù)邏輯調(diào)整請求位置

執(zhí)行上面代碼就代表著開始監(jiān)聽轉(zhuǎn)發(fā)按鈕了。

快去嘗試叭~文章來源地址http://www.zghlxwxcb.cn/news/detail-467020.html

到了這里,關(guān)于feat:使用企業(yè)微信JS-SDK的onMenuShareAppMessage()實現(xiàn)點擊轉(zhuǎn)發(fā)自定義分享內(nèi)容(TypeScript)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JS-SDK微信支付開發(fā)攻略

    ? 一、吐槽篇 一個字——坑!兩個字——很坑!三個字——非???!首先,微信支付接口作為微信開發(fā)接口的一部分,竟然有一本書那么厚的官方文檔,共36頁,更重要的是,這36頁還不能把開發(fā)的流程說清楚,描述過于分散,過度分類,導(dǎo)致遇到一個問題的時候很難定位,

    2024年02月08日
    瀏覽(17)
  • H5項目中使用微信JS-SDK(以H5項目批量上傳圖片為例,兼容IOS及安卓)

    H5項目中使用微信JS-SDK(以H5項目批量上傳圖片為例,兼容IOS及安卓)

    H5項目中使用微信圖片上傳相關(guān)sdk,主要用于解決 1.安卓手機無法一次選擇多張圖片進行上傳問題;2.控制IOS系統(tǒng)手機一次可無限量選擇圖片上傳的問題 一、準(zhǔn)備工作:公眾號配置 驗證所需使用的sdk是否符合需求 可在使用場景中,打開微信官方提供的 微信SDKDemo 鏈接,或企業(yè)

    2024年02月07日
    瀏覽(22)
  • h5接微信js-sdk的詳細步驟

    h5接微信js-sdk的詳細步驟

    流程圖: 微信文檔https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 登錄微信公眾平臺公眾號設(shè)置,進行js安全域名設(shè)置 配置完安全域名之后,會讓微信知道我們有這樣一個域名,但是此時還不能實現(xiàn)雙方對話 1.申請一個安全域名 2.去微信公眾平臺下載MP_verify_WCdi1jnSEaG

    2024年02月04日
    瀏覽(22)
  • vue3引入JS-SDK實現(xiàn)h5分享小卡片、跳轉(zhuǎn)微信小程序功能

    vue3引入JS-SDK實現(xiàn)h5分享小卡片、跳轉(zhuǎn)微信小程序功能

    微信js-sdk官方文檔: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 想要實現(xiàn)的效果: 1.登錄微信公眾平臺,進入“公眾號設(shè)置”的“功能設(shè)置”里填寫“JS接口安全域名”。 2.通過npm引入js-sdk 安裝成功后,可以在package.json中找到\\\"weixin-js-sdk\\\" 3.在main.js中,將js-sdk掛載

    2024年02月11日
    瀏覽(101)
  • 微信分享第三方連接(H5頁面)自定義縮略圖、標(biāo)題、描述(顯示分享框,而不是鏈接)(微信JS-SDK)

    微信分享第三方連接(H5頁面)自定義縮略圖、標(biāo)題、描述(顯示分享框,而不是鏈接)(微信JS-SDK)

    首先要說明幾個分享相關(guān)的問題: 現(xiàn)在微信不支持自定義按鈕分享組件(也就是說不能點擊某個按鈕分享),只能通過微信右上角的三個小點,點擊后選擇分享給朋友,朋友圈等。 當(dāng)前從企業(yè)微信分享到微信好友和微信朋友圈是有問題的,一些手機(有些是因為app版本,企

    2024年02月09日
    瀏覽(23)
  • 微信 JS-SDK 實現(xiàn)自定義分享、手機選圖拍照、圖片音頻處理、地理位置、搖一搖等功能

    微信 JS-SDK 實現(xiàn)自定義分享、手機選圖拍照、圖片音頻處理、地理位置、搖一搖等功能

    微信 JS-SDK 是微信公眾平臺 面向網(wǎng)頁開發(fā)者提供的基于微信內(nèi)的網(wǎng)頁開發(fā)工具包 通過使用微信 JS-SDK ,開發(fā)者可借助微信高效地使用 拍照 、 選圖 、 語音 、 位置 等手機系統(tǒng)的能力 同時可以直接使用 微信分享 、 掃一掃 、 卡券 、 支付 等微信特有的能力,是管理微信一切

    2024年02月09日
    瀏覽(31)
  • 微信公眾號 H5 JS-SDK wx.config 報錯 invalid url domain 及 invalid signature 錯誤原因及解決方式

    微信公眾號 H5 JS-SDK wx.config 報錯 invalid url domain 及 invalid signature 錯誤原因及解決方式

    在項目進行JSSDK使用的過程中,出現(xiàn)了很多問題,其中報錯invalid url domain 以及 invalid signature最多,也最頭疼,部分坑在文檔里也并沒有寫清楚,這里就簡單說下這兩個報錯的原因和解決方式 當(dāng)報錯invalid url domain時 其實離成功不遠了,錯誤原因也很直白,就是url并沒有在公眾

    2024年02月08日
    瀏覽(24)
  • 無條件抽獎和條件抽獎(互動功能發(fā)起端JS-SDK)

    無條件抽獎和條件抽獎(互動功能發(fā)起端JS-SDK)

    允許開始前對抽獎進行獎品、中獎人數(shù)、中獎人員等設(shè)置,完成設(shè)置后可以開始抽獎。 本功能只支持講師、嘉賓、助教、管理員這四種角色進行抽獎的發(fā)起和停止。 支持自定義設(shè)置中獎用戶信息采集字段。 支持設(shè)置預(yù)設(shè)中獎用戶。 支持設(shè)置定時開獎 可查看中獎名單 ? ? 在

    2024年02月08日
    瀏覽(19)
  • 低代碼如何集成多平臺(企業(yè)微信、釘釘、飛書)SDK,且聽我細細道來

    低代碼如何集成多平臺(企業(yè)微信、釘釘、飛書)SDK,且聽我細細道來

    我們是一家做 低代碼 產(chǎn)品開發(fā)的公司,我司的低代碼產(chǎn)品支持在多個平臺環(huán)境內(nèi)使用:有釘釘、企業(yè)微信、微信、飛書、W eb 瀏覽器(如谷歌),后續(xù)還會接入更多平臺。面對這么多平臺,每個平臺的SDK可能一致,可能不一致。 那我們?nèi)绾渭啥嗥脚_SDK呢? 且聽我細細道來

    2024年04月13日
    瀏覽(79)
  • uniapp(vue3) - 微信小程序平臺使用import引入外部js文件出現(xiàn)undefined,正常引入js文件(sdk插件)文件路徑正確但console.log控制臺打印時卻是undefined

    uniapp(vue3) - 微信小程序平臺使用import引入外部js文件出現(xiàn)undefined,正常引入js文件(sdk插件)文件路徑正確但console.log控制臺打印時卻是undefined

    注:uniapp 小程序平臺! 在使用 uniapp 微信小程序端導(dǎo)入 SDK 的過程中,您可能會遇到這樣的情況: 使用 console.log() 打印導(dǎo)入的模塊名稱時,實際輸出的名稱并不是您期望的名稱。這是因為 uniapp 進行了編譯和打包處理后,會將代碼重新命名以減小文件大小和提高執(zhí)行效率,包

    2024年02月10日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包