玩轉小程序轉發——小程序探索

轉發的意義

  • 轉發便是分享,分享帶動了事物去中心化,實現網絡化,最終走向雲處理化
  • 經過微信平臺,轉發便是聊天
  • 流量時代,轉發便是引流

官方轉發示例

onShareAppMessage(Object)html

  • 監聽用戶點擊頁面內轉發按鈕(<button> 組件 open-type="share")或右上角菜單「轉發」按鈕的行爲,並自定義轉發內容。
  • 注意:只有定義了此事件處理函數,右上角菜單纔會顯示「轉發」按鈕

Object 參數說明:
clipboard.png小程序

此事件須要 return 一個 Object,用於自定義轉發內容,返回內容以下:後端

自定義轉發內容
clipboard.png微信

Page({
  onShareAppMessage(res) {
    if (res.from === 'button') {
      // 來自頁面內轉發按鈕
      console.log(res.target)
    }
    return {
      title: '自定義轉發標題',
      path: '/page/user?id=123'
    }
  }
})

常規轉發,只需上面示例便可網絡

  • 在onShareAppMessage中定義轉發內容和必要參數,如?id=123
  • 在相應頁面的onLoad(Object query)中能夠獲取

根據場景值區分

  • 對於小程序,能夠在 App 的 onLaunch 和 onShow,或wx.getLaunchOptionsSync 中獲取場景值
  • 因爲onLaunch全局只觸發一次和熱啓動的緣由,在onShow中獲取、設置相關參數比較合理,尤爲是轉發,從微信消息過來,必然會觸發onShow
  • 經過app.onShow回調,獲取場景值
App({
  onShow(res) {
    console.log('app---onShow');
    console.log(res.scene);
    //1044是羣聊,1007是私聊
  }
})

wx.onAppShow(function callback)app

基礎庫 2.1.2 開始支持,低版本需作兼容處理
監聽小程序切前臺事件。該事件與 App.onShow 的回調參數一致
Object res
clipboard.png函數

referrerInfo 的結構優化

clipboard.png

返回有效 referrerInfo 的場景加密

clipboard.png

注意
部分版本在無referrerInfo的時候會返回 undefined,建議使用 options.referrerInfo && options.referrerInfo.appId 進行判斷

小程序分享票據shareTickets

一般開發者但願轉發出去的小程序被二次打開的時候可以獲取到一些信息,例如羣的標識。如今經過調用 wx.showShareMenu 而且設置 withShareTicket 爲 true ,當用戶將小程序轉發到任一羣聊以後,此轉發卡片在羣聊中被其餘用戶打開時,能夠在 App.onLaunch 或 App.onShow 獲取到一個 shareTicket。經過調用 wx.getShareInfo() 接口傳入此 shareTicket 能夠獲取到轉發信息。spa

  • 和場景值scene同樣,shareTicket也是在App.onShow中獲取比較合理
  • 必須在分享前調用wx.showShareMenu方法,不然不會帶分享票據
//分享前share.js
Page({
  onLoad: function () {
    wx.showShareMenu({
      withShareTicket: true
    })
  }
})
//分享後app.js
App({
  onShow(res) {
    console.log('app---onShow');
    console.log(res.shareTicket);
  }
})
  • 只有分享到任一羣聊,shareTicket纔會有值,不然是undefined
  • shareTicket也能夠用來區分轉發消息的場景
  • shareTicket主要用來獲取轉發詳情,傳入wx.getShareInfo()中獲取加密數據,須要後端配合,返回解密數據
注意:注意:注意
鑑於官方「分享監聽」能力調整,網上90%的滯後代碼,誤人子弟,在此必須給本身一個小要求,按期復讀本身的文章,根據當時能力水平,提升文章質量,修正錯誤和滯後信息(吐槽一下度娘已死,沒人打我吧?打我就刪除)

相似以下代碼,如今已不支持回調

clipboard.png

這次調整可能影響到三種分享功能的用法

  • 第一種:判斷用戶是否分享成功,進而給予用戶獎勵。

    例如:小程序提示用戶「分享到5個羣,能夠得到一張20元的優惠券」。

    這類誘導用戶分享的行爲是咱們平臺所不倡導的,後續將沒有辦法實現。

  • 第二種:分享完成後變動當前的頁面狀態

    例如:贈送禮品場景下,用戶點擊「贈送」按鈕,將禮品分享出去,分享成功後,界面展現「等待領取」。

    這類場景,咱們建議能夠適當調整交互方案。例如在分享後繼續保留「贈送」按鈕,但在頁面上提示用戶一個禮品只能被一人領取,重複贈送無效。

  • 第三種:經過用戶分享以後的 shareTicket 獲取羣惟一標識 openGId ,以顯示對應羣的相關信息。

    例如:經過分享小程序到某個羣裏,能夠查看該羣內成員的排行榜。

這次調整後,用戶分享完成後沒法馬上顯示該羣的排行榜信息,但仍可在用戶從羣消息點擊進入小程序時顯示該羣的排行榜信息。

轉發動態消息

從基礎庫 2.4.0 開始,支持轉發動態消息。動態消息對比普通消息,有如下特色:

  • 消息發出去以後,開發者能夠經過後臺接口修改部分消息內容
  • 消息有對應的提醒按鈕,用戶點擊提醒按鈕能夠訂閱提醒,開發者能夠經過後臺修改消息狀態並推送一次提醒消息給訂閱了提醒的用戶

簡要步驟以下

  1. (後端調用)每條動態消息能夠理解爲一個活動,活動發起前須要經過 createActivityId 接口建立 activity_id 後續轉發動態消息以及更新動態消息都須要傳入這個 activity_id
  2. 經過調用 wx.updateShareMenu 接口,傳入 isUpdatableMessage: true等參數
  3. (後端調用)動態消息發出去以後,能夠經過 setUpdatableMsg 修改消息內容

像拼團這樣的活動,能夠考慮優化成動態消息,須要後端配合,實戰的時再補充

總結

  • 分享監聽能力調整後,對於分享的騷操做基本在App.onShow中進行,至關於受權那樣,必須打開轉發消息才能獲取轉發詳情,這也是符合設計準則的
  • 能夠看出,不論是從設計準則,仍是用戶隱私,微信都在向着IOS看齊,黑暗法則已過去,咱們也該注重規範和隱私了
相關文章
相關標籤/搜索