HarmonyOS 鸿蒙Next在flutter中如何通过uni_links拉起app?

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next在flutter中如何通过uni_links拉起app? 我的需求是在浏览器用scheme协议唤起app时,app要能得到完整的scheme地址,开发都是用flutter,我看第三方有uni_links这个库,因此我自行适配了ohos,目前存在一个问题,在应用已经打开的情况下,此时切换到浏览器去唤起app,uni_links的ohos插件XUniLinksPlugin.ets里的onNewWant方法没有回调,导致flutter测监听不到scheme地址变化(EntryAbility的onNewWant有回调),请问ohos插件应该如何修改?

2 回复

请按照如下方式进行修改并验证:

  1. 以单例模式创建XUniLinksPlugin对象,代码参考如下:
private static instance: XUniLinksPlugin | null = null;
public static getInstance(): XUniLinksPlugin {
  if (!XUniLinksPlugin.instance) {
    XUniLinksPlugin.instance = new XUniLinksPlugin();
  }
  return XUniLinksPlugin.instance;
}
constructor() {
  if (!XUniLinksPlugin.instance) {
    XUniLinksPlugin.instance = this;
  } else {
    return XUniLinksPlugin.instance
  }
}
  1. 在EntryAbility中的onNewWant方法增加如下代码:
if (want.uri?.search('links://com.example.test/localpath') == 0) {
  XUniLinksPlugin.getInstance().onNewWant(want, launchParams)
}

更多关于HarmonyOS 鸿蒙Next在flutter中如何通过uni_links拉起app?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS鸿蒙Next中,通过uni_links库在Flutter应用中拉起APP,主要依赖于处理URL Scheme或Universal Links。以下是实现的基本步骤:

  1. 配置Manifest文件:确保在config.json中正确配置了URL Scheme或Universal Links。这通常涉及添加intent-filter来指定能够响应的URL模式。

  2. 依赖添加:在pubspec.yaml文件中添加uni_links依赖,并运行flutter pub get

  3. 代码实现:

    • 引入uni_links包。
    • 在应用启动时(例如在main.dart_getInitialLink函数中),调用getInitialLink()来获取启动时的链接。
    • 使用getUriLinksStream()监听后续的链接跳转事件。
  4. 处理链接:在获取到链接后,根据业务需求进行相应处理,如导航到特定页面、展示内容等。

示例代码框架:

import 'package:flutter/material.dart';
import 'package:uni_links/uni_links.dart';

void main() async {
  final initialLink = await getInitialLink();
  if (initialLink != null) {
    // 处理启动时的链接
  }
  runApp(MyApp());
  final linksSubscription = getUriLinksStream().listen((String? link) {
    // 处理后续的链接
  }, onError: (err) {
    // 处理错误
  });
}

class MyApp extends StatelessWidget {
  // 应用主体
}

请注意,具体实现可能需要根据HarmonyOS的特性做适当调整。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部