移動應用拉起小程序是指用戶可以通過接入該功能的第三方移動應用(APP)跳轉至某一微信小程序的指定頁面,完成服務后跳回至原移動應用(APP)。
App和小程序互相跳轉:
1)App主動發起小程序卡片分享到微信,微信點擊打開小程序,這時的小程序可以打開App。(同行的各位做過分享的應該對這個比較熟悉)
2)App主動發起打開小程序,這時的小程序可以打開App。
目前主要就這兩種方式吧,嚴格來說互相跳轉不太欠妥,畢竟App才是主動一方,小程序只能被動返回,類似于分享,App如果不發起分享到微信,微信是不能返回你的App的。總的來說,從 APP 跳轉到小程序時,小程序會獲得返回此 APP 的權限。
此功能需要前端跟iOS開發工程師一起配合,返回主要前端做處理。?小程序打開 APP 的能力?可以理解為由小程序框架在內部管理的一個狀態,為 true 則可以打開 APP,為 false 則不可以打開 APP。
App跳轉小程序原理及實現微信官網可查看:App拉起小程序功能
小程序返回App原理及實現微信官網可查看:小程序打開App功能
下面主要講iOS App跳轉小程序準備工作,流程配置吧。
1向微信注冊你的應用程序id :請到 開發者應用登記頁面 進行登記,登記并選擇移動應用進行設置后,將獲得AppID,可立即用于開發。但應用登記完成后還需要提交審核,只有審核通過的應用才能正式發布使用。
2.搭建開發環境
2.1 通過CocoaPods集成
[1] 在工程的Podfile里面添加以下代碼:
pod ‘WechatOpenSDK' ,保存并執行pod install。
注意: 命令行下執行pod search WechatOpenSDK,如顯示的WechatOpenSDK版本不是最新的,則先執行pod repo update操作更新本地repo的內容
[2] 在Xcode中,選擇你的工程設置項,選中“TARGETS”一欄,在“info”標簽欄的“URL type“添加“URL scheme”為你所注冊的應用程序id(如下圖所示)。
Xcode設置URL scheme
[3] 在Xcode中,選擇你的工程設置項,選中“TARGETS”一欄,在“info”標簽欄的“LSApplicationQueriesSchemes“添加weixin(如下圖所示)。
[4] 在你需要使 用微信API的文件中import WXApi.h 頭文件,并增加 WXApiDelegate 協議。
常見問題:
對于之前SDK放在主工程目錄下,切換成CocoaPods的形式,執行pod install 之后,出現
* Use the $(inherited) flag, or
* Remove the build settings from the target.
解決方法是 把工程target中的build Setting里面PODS_ROOT的值替換成$(inherited)
Other Linker Flags中 -all_load 替換成$(inherited)
3.實現App跳轉小程序
[1] 向微信注冊你的id。(如下圖所示,在 AppDelegate 的 didFinishLaunchingWithOptions 函數中向微信注冊id)。
[2] 重寫AppDelegate的handleOpenURL和openURL方法:
[3]App拉起小程序
//測試代碼
[WXApi openWXApp];
iOS這里有個很坑的地方,文檔中是這樣寫的
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];launchMiniProgramReq.userName = userName;//拉起的小程序的username launchMiniProgramReq.path = path;//拉起小程序頁面的可帶參路徑,不填默認拉起小程序首頁launchMiniProgramReq.miniProgramType = miniProgramType;//拉起小程序的類型 ? ? ? ??
return? [WXApi sendReq:launchMiniProgramReq];
這個userName并沒有具體說明是什么參數,但是仔細想想App要跳到指定App一定會有標識,或者說APP是怎么和小程序關聯的呢?其實該userName就是小程序的userName,你可以登錄微信公眾號平臺|小程序,然后在設置—>基本設置中查看,里面有個原始id,就是小程序的userName。小程序配置里的原始ID 必須是 gh_................... 形式的。
launchMiniProgramReq.userName = @“gh_xhdfjegew78”;//拉起的小程序的username 其實就是 原始ID。
這樣你就將APP和小程序關聯起來了。
??另外APP關聯小程序收銀臺指引:
登錄微信開放平臺之后,可在“管理中心-移動應用-應用詳情-關聯小程序信息”,
添加“wxce9be1b446012310”(舉例子),為通過審核的移動應用關聯小程序
還有一個問題:App跳轉的小程序如何打開指定的頁面呢?
這就要看另一行代碼:
wxMiniObject.path?=?@"pages/index/index";
你需要設置一下小程序的path,這個path的頁面就是你點擊分享的小程序打開的頁面。
[4] 小程序返回App---回調
? ? -(void) onResp:(BaseResp*)resp
獲取結果 Resp.extMsg,前端可通過小程序返回App進行傳值做業務處理。