1. 程式人生 > >白鷺引擎的微信分享介面

白鷺引擎的微信分享介面

在遊戲開發中微信分享功能是必不可少的 。在白鷺引擎中微信的分享介面跟cocos-js有一點出入。程式碼如下

//獲取簽名分享
  var url = "http://www.gamedo.net:8889/get_sign?game_url=" + encodeURIComponent(location.href).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
    var urlloader = new egret.URLLoader();
        var
req = new egret.URLRequest(url); urlloader.load(req); req.method = egret.URLRequestMethod.GET; urlloader.addEventListener(egret.Event.COMPLETE, (e)=> { var signPackage = <SignPackage>JSON.parse(e.target.data); var bodyConfig = new BodyConfig(); bodyConfig.debug = true
; bodyConfig.appId = 'wx8923c424f092e0af'; bodyConfig.timestamp = signPackage.timestamp; bodyConfig.nonceStr = signPackage.nonceStr; bodyConfig.signature = signPackage.signature; bodyConfig.jsApiList = [ 'checkJsApi', 'onMenuShareTimeline'
, 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo' ] wx.config(bodyConfig); wx.ready(function(){ shareConfig(title, desctr, link, imgUrl); }) }, this)
;

其中url是需要訪問的伺服器地址,是在類中寫的一個介面,裡面定義了一下屬性。如下

interface SignPackage {
    appId:string;
    nonceStr:string;
    timestamp:number;
    signature:string;
    url:string;
}

給獲得的資料使用JSON.parse()轉成介面的資料型別。
通過白鷺引擎裡面分裝的new BodyConfig();,來設定簽名和介面,給網路載入新增網路偵聽,在偵聽方法裡面設定
公眾號的唯一標識: appId

時間戳: timestamp

隨機碼: nonceStr

簽名: signature
bodyConfig.jsApiList = [// 必填,需要使用的JS介面列表
// 所有要呼叫的 API 都要加到這個列表中
‘checkJsApi’,//判斷當前客戶端是否支援指定JS介面
‘chooseImage’//拍照或從手機相簿中選圖介面
];
例如在本例中需要使用分享到朋友圈,分享到QQ ,分享到微博等API所有在定義的時候這些API都存在於jsApiList 裡面。
設定完基本資訊之後然後通過wx.config()來注入許可權驗證配置。
然後通過ready介面處理成功驗證。在ready接口裡面呼叫全域性的方法 ,來設定具體的介面的使用方法。具體的使用方法如下:

function shareConfig(title, desc, link, imgUrl) {
    var shareAppMessage  = new BodyMenuShareAppMessage();
    shareAppMessage.title = title;
    shareAppMessage.desc = desc;
    shareAppMessage.link = link;
    shareAppMessage.imgUrl = imgUrl;
    shareAppMessage.success = function(res){
        SceneControl.createLoaingShare();
    }
     shareAppMessage.fail = function(res){
        alert("fenxiangshibai")
    }
    wx.onMenuShareAppMessage(shareAppMessage);
    /**
     * 分享到QQ
     */
    var shareqq = new BodyMenuShareQQ();
    shareqq.title = title;
    shareqq.desc = desc;
    shareqq.link = link;
    shareqq.imgUrl = imgUrl;
    shareqq.success = function(res){
        SceneControl.createLoaingShare();
    }
      shareqq.fail = function(res){
        alert("fenxiangshibai")
    }
    wx.onMenuShareQQ(shareqq);
    /**
     * 分享到朋友圈
     */
    var sharet = new BodyMenuShareTimeline();
    sharet.title = title+desc;
    sharet.link = link;
    sharet.imgUrl = imgUrl;
    sharet.success = function(res){
        SceneControl.createLoaingShare();
    }
    sharet.fail = function(res){
       alert("fenxiangshibai")
    }
    wx.onMenuShareTimeline(sharet)
    /**
     * 分享到微博
     */
    var shareweibo = new BodyMenuShareWeibo();
    shareweibo.title = title+desc;
    shareweibo.link = link;
    shareweibo.imgUrl = imgUrl;
    shareweibo.success = function(res){
        SceneControl.createLoaingShare();
    }
     shareweibo.fail = function(res){
        alert("fenxiangshibai")
    }
    wx.onMenuShareWeibo(shareweibo)
}

這個指令碼必需是在遊戲已載入的時候就註冊分享介面。。。