美文网首页
app_links和fluwx_no_pay针对deeplink

app_links和fluwx_no_pay针对deeplink

作者: 4VZhang | 来源:发表于2024-06-03 10:13 被阅读0次

问题背景

  1. 项目包含微信分享功能,
  2. 通过deeplink唤起APP后,根据路径中拼接的参数进行页面跳转等逻辑处理

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();
     // 如果程序已经正在运行,可以通过这种方式获取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) {
        
        }
    }

结果:
首次点击微信分享,跳转到微信授权后,会再次跳转回APP,但无法再次跳转到微信进行分享了!
打印日志如下:

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

相关文章

  • Android Activity Deeplink启动来源获取源

    一、前言 目前有很多的业务模块提供了Deeplink服务,Deeplink简单来说就是对外部应用提供入口。 针对不...

  • Web端向App端导量神技Deferred DeepLink的实

    1.什么是DeepLink 2.什么是Deferred DeepLink 3.Deferred DeepLink的...

  • Android DeepLink 技术

    DeepLink 是什么 DeepLink 从字面意思可以理解为「深度链接」,那么 DeepLink 在 Andr...

  • DeepLink

    DeepLink 深度链接 什么是DeepLink DeepLink,又称深度链接、调起链接,是一套链接服务,用户...

  • DeepLink

    一、Intent基础 二、DeepLink基础 实现方式1:(DeepLink为Uri格式) 实现方式2:(Dee...

  • 测试deeplink 和applink

    链接地址: deeplink applink-http applink-https

  • Deeplink使用

    一:deeplink DeepLink: 深度链接技术,主要应用场景是通过Web页面直接调用Android原生ap...

  • Deeplink实践原理分析

    目录介绍 01.先看一个场景 02.什么是DeepLink 03.什么是Deferred DeepLink 04....

  • scheme协议

    先说下DeepLink(深度链接) DeepLink,又称深度链接、调起链接,是一套链接服务,用户点击链接可以跳转...

  • deepLink

    写在前面 我们在使用deepLink的流程是这样的:(1)在A应用内配置了B应用的URLScheme,那么我们就可...

网友评论

      本文标题:app_links和fluwx_no_pay针对deeplink

      本文链接:https://www.haomeiwen.com/subject/rrceqjtx.html