iOS 微信分享的鏈接喚醒 APP 并跳轉(zhuǎn)到指定頁面

這篇文章主要講從微信或者瀏覽器點擊鏈接,跳轉(zhuǎn)APP以后的操作及遇到的問題,至于APP分享到微信,大家可以按照文檔一步一步集成就好了https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html,有疑問可以留言

我們先來看一下效果


微信跳轉(zhuǎn)APP指定頁面.gif

1.微信返回拉起我們的應(yīng)用是在AppDelegate里面的這個方法

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
       if (url.absoluteString).contains("wechat") {
            let handleUrlStr = url.absoluteString
            if let handleUrl = URL(string: handleUrlStr) {
                return WXApi.handleOpen(handleUrl, delegate: WXApiManager.shared)
            }
        }
        return false
     }self

這個方法需要傳一個delegate,這個delegate就是回調(diào)onReq(_ req: BaseReq)的地方,而這個地方,需要把這個方法拋出去到你使用的類里,而不是AppDelegate;所以delegate寫這個單例而不是寫self,單例里需要寫兩個回調(diào)方法

//微信
class WXApiManager:NSObject {
    static let shared = WXApiManager()
}
extension WXApiManager:WXApiDelegate{
    func onReq(_ req: BaseReq) {
        //onReq是微信終端向第三方程序發(fā)起請求,要求第三方程序響應(yīng)。根據(jù)H5給的extinfo數(shù)據(jù)做相應(yīng)處理就ok了
        let launchReq = req as? LaunchFromWXReq
        let msg = launchReq?.message
        guard let extinfo = msg?.messageExt else { return  }
        if if_isLogin() {
            let currentVC = if_getTopViewController()
            currentVC?.if_openWebVC(extinfo)
        }
    }
    func onResp(_ resp: BaseResp) {
        //支付結(jié)果回調(diào)
    }
}

extension WXApiManager {
    //檢查用戶是否已經(jīng)安裝微信并且有支付功能
    private func checkWXInstallAndSupport() -> Bool {
        if !WXApi.isWXAppInstalled() {
//            MBProgressHUD.showInfo("微信未安裝")
            return false
        }
        if !WXApi.isWXAppSupport() {
//            MBProgressHUD.showInfo("當(dāng)前微信版本不支持支付")
            return false
        }
        return true
    }
}

注:使用delegate的時候一定要統(tǒng)一到WXApiManager里做處理,系統(tǒng)回調(diào)給微信的代理入口都是 WXApiManager.shared就OK

重點:微信delegate的唯一性,不要給微信的delegate到處設(shè)置“self”,這樣回調(diào)回來就找不到代理方法了,出現(xiàn)onReq(_ req: BaseReq)方法不走的問題?。∷砸獑为殑?chuàng)建一個WXApiManager單例作為代理回調(diào),在WXApiManager里面處理代理回調(diào)

如本文解決了您的問題,歡迎點贊、收藏喲?。。?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容