App喚起微信小程序和回調


在同一開放平台賬號下的移動應用及小程序無需關聯即可完成跳轉,非同一開放平台賬號下的小程序需與移動應用(APP)成功關聯后才支持跳轉。

可在“管理中心-移動應用-應用詳情-關聯小程序信息”,為通過審核的移動應用發起關聯小程序操作。

喚起

App打開下程序他有兩種方式:

1,通過App分享小程序卡片 到微信,然后在微信上點擊小程序卡片打開小程序,這是小程序也可以打開App

第一步:你需要到微信開放平台 將你的app 關聯上你的小程序!
第二步:你工程中需要導入有 wechatOpenSDK
第三步: 分享小程序卡片類型
官方文檔: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317332&token=&lang=zh_CN
第一種:文字類型分享示例
SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init];
    req.text = @"分享內容";
    req.bText = YES;
    req.scene = WXSceneSession; // 目前只支持會話形式
    [WXApi sendReq:req];

第二種:App 主動分享小程序卡片:⚠️ 小程序測試版不能分享
WXMiniProgramObject *wxminiObiect = [WXMiniProgramObject object];
    wxminiObiect.webpageUrl =  webpageUrl; //兼容低版本的網絡鏈接
    wxminiObiect.userName =  userName;//小程序的原始ID
    wxminiObiect.path = path;// 指定打開小程序的某一個頁面的URL路徑
    wxminiObiect.hdImageData =  hdImageData; //小程序節點高清大圖,小於128K
    
    WXMediaMessage *message = [WXMediaMessage message];
    message.title = @"小程序title";
    message.description = @"小程序description";
    message.mediaObject = wxminiObiect;
    message.thumbData = nil; // 兼容舊版本節點的圖片,小於32k,新版本優先
    
    SendMessageToWXReq *req = [[SendMessageToWXReq alloc]init];
    req.message = message;
    req.scene = WXSceneSession; // 目前只支持會話
    
    return [WXApi sendReq:req];

2,通過App主動的調用api 打開小程序,這時候小程序也可以打開App

官方文檔:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=21526646385rK1Bs&token=&lang=zh_CN

 WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
    launchMiniProgramReq.userName = @"gh_3413cfa14bae";  //拉起的小程序的原始ID
    launchMiniProgramReq.path = @"pages/index/index";    //拉起小程序頁面的可帶參路徑,不填默認拉起小程序首頁
    launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease; //拉起小程序的類型
   [WXApi sendReq:launchMiniProgramReq];
//或者 String appId = "wxd930ea5d5a258f4f"; // 填應用AppId IWXAPI api = WXAPIFactory.createWXAPI(context, appId); WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req(); req.userName = "gh_d43f693ca31f"; // 填小程序原始id req.path = path; //拉起小程序頁面的可帶參路徑,不填默認拉起小程序首頁 req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE; // 可選打開 開發版,體驗版和正式版 api.sendReq(req);

WXMiniProgramTypeRelease 正式版    WXMiniProgramTypeTest 開發版    WXMiniProgramTypePreview 體驗版

回調

當小程序從 APP 分享消息卡片的場景打開(場景值 1036,APP 分享小程序文檔 iOS / Android) 或從 APP 打開的場景打開時(場景值 1069),小程序會獲得打開 APP 的能力,此時用戶點擊按鈕可以打開分享該小程序卡片/拉起該小程序的 APP。即小程序不能打開任意 APP,只能 跳回 APP。

options.scene是1036,這個場景id表示app分享。
options.scene是1069,這個場景id表示從app打開。

按微信文檔中描述,從小程序中跳回App只能通過點擊小程序中的按鈕方可跳回,如何實現點擊按鈕跳回App,並攜帶參數呢,需如下兩步

App端:

需要創建WXEntryActivty,實現IWXAPIEventHandler接口,重寫onResp方法。注意Acitvity需要在Manifest文件中聲明 android:exported="true",這樣才可以被外部喚起

public void onResp(BaseResp resp) {
    if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
        WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
        String extraData =launchMiniProResp.extMsg; // 對應下面小程序中的app-parameter字段的value
    }
}

小程序端:

需要將 <button> 組件 open-type 的值設置為 launchApp。如果需要在打開 APP 時向 APP 傳遞參數,可以設置 app-parameter 為要傳遞的參數。通過 binderror 可以監聽打開 APP 的錯誤事件。

<view class='suspension'>
      <button class="server_button" open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開APP</button>
    </view>

這樣App拿到的內容就是wechat。

擴展 

再下一步的需求是多個App跳轉一個小程序,再分別返回不同的App;一個App跳轉不同的小程序,接受不同的返回內容。

從App拉起小程序頁面的路徑是可以帶參數的,我們就利用這個參數判斷是從那個App跳到小程序的。

例如:

名稱為a的App跳轉路徑為:

"pages/index/index?type=appA"

名稱為b的App跳轉路徑為:

"pages/index/index?type=appB"

小程序端接收參數:

onLoad: function (options) {
    console.log(options.type); //app傳遞過來的參數 可以判斷a或者b
},

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM