app_links和fluwx_no_pay針對deeplink的沖突處理

問題背景

  1. 項目包含微信分享功能,
  2. 通過deeplink喚起APP后,根據(jù)路徑中拼接的參數(shù)進行頁面跳轉(zhuǎn)等邏輯處理

pubspec.yaml文件

  fluwx_no_pay: ^3.13.1

  # 拉起app
  app_links: ^5.0.0

項目中app_links部分代碼,如下:

import 'package:app_links/app_links.dart';

    _appLinks = AppLinks();

    // 如果程序沒在后臺運行,也可以在剛喚醒事獲取DeepLink URI
    final appLink = await _appLinks.getInitialAppLink();
     // 如果程序已經(jīng)正在運行,可以通過這種方式獲取DeepLink URI
    _linkSubscription = _appLinks.uriLinkStream.listen((uri) async {
      if (kDebugMode) {
        FTLog.d('onAppLink: $uri');
      }
      openAppLink(uri);
    });

項目中fluwx_no_pay部分代碼,如下:

import 'package:fluwx_no_pay/fluwx_no_pay.dart' as fluwx;

 fluwx.registerWxApi(
        appId: kWechatPayAppId,
        doOnIOS: true,
        doOnAndroid: true,
        universalLink: kIosUniversalLinks);

    fluwx.weChatResponseEventHandler.asBroadcastStream().listen((event) {
        if (event is fluwx.WeChatShareResponse) {
        
        }
    }

結果:
首次點擊微信分享,跳轉(zhuǎn)到微信授權后,會再次跳轉(zhuǎn)回APP,但無法再次跳轉(zhuǎn)到微信進行分享了!
打印日志如下:

flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ onAppLink: https://www.xxxxxxxxx/app/deeplink/wx11163xxxxxxe463/
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

原因分析:

二者都對AppDelegate中的以下兩個方法進行了覆蓋,

override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

}
override func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

}

解決方案:
在以上兩個方法中加入WXApi.handleOpen(url, delegate: self) 、WXApi.handleOpenUniversalLink(userActivity, delegate: self)代碼如下:

 override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        
         WXApi.handleOpen(url, delegate: self)
        return super.application(app, open: url, options: options)
    }
    
    
    override func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

        WXApi.handleOpenUniversalLink(userActivity, delegate: self)
        return super.application(application, continue: userActivity, restorationHandler: restorationHandler)
    }

參考文檔:

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

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

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