gpt4 book ai didi

flutter - 如何使用 Flutter Huawei Push Kit 插件获取推送通知点击事件?

转载 作者:行者123 更新时间:2023-12-04 09:05:47 26 4
gpt4 key购买 nike

我正在 Flutter 应用程序中集成华为推送工具包( https://pub.dev/packages/huawei_push ),一切正常,除了在单击接收到的推送通知消息时我无法获取事件以对其进行操作。
这可以通过这个插件实现还是我需要用原生 Android 代码编写这部分?

最佳答案

目前,您可以使用另一个监听自定义意图的插件来实现这一点。 Uni_links来自 pub.dev 的包很容易使用。这是 uni_links 包的快速指南:

  • 添加 uni_links 给您的 pubspec.yaml 文件:
  • dependencies:
    flutter:
    sdk: flutter
    huawei_push: 4.0.4+300
    uni_links: 0.4.0
  • 在您的 上定义一个意图过滤器AndroidManifest.xml 文件:
  • <application
    <!-- . . . Other Configurations . . . -->
    <activity/>
    <!-- . . . Other Configurations . . . -->
    <!-- Add the intent filter below.(inside the application and activity tags) -->
    <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="app"/>
    </intent-filter>
    </activity>
    </application
  • 在您的 initState() 中调用 uni links 方法,该方法将监听自定义意图。我从 Push Kit 控制台发送的通知的自定义意图如下所示:
  • app:///ContentPage?name=Push Kit&url=https://developer.huawei.com/consumer/en/hms/huawei-pushkit
    // Get the initial intent that opens the app
    Future<void> initInitialLinks() async {
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
    String initialLink = await getInitialLink();
    if (initialLink != null) {
    var uri = Uri.dataFromString(initialLink);
    String page = uri.path.split('://')[1];
    String serviceName = uri.queryParameters['name'];
    String serviceUrl = uri.queryParameters['url'];
    try {
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
    Navigator.of(context).pushNamed(
    page,
    arguments: ContentPageArguments(serviceName, serviceUrl),
    ); // Navigate to the page from the intent
    });
    } catch (e) {
    Push.showToast(e);
    }
    }
    } on PlatformException {
    print('Error: Platform Exception');
    }
    }

    // Get intents as a stream
    Future<Null> initLinkStream() async {
    if (!mounted) return;
    _sub = getLinksStream().listen((String link) {
    var uri = Uri.dataFromString(link);
    String page = uri.path.split('://')[1];
    // Parse the string ...
    Navigator.of(context).pushNamed(page); // Navigate to a page from the intent
    }, onError: (err) {
    print("Error while listening for the link stream: " + err.toString());
    });
    }
    更多信息,请访问: Deep Linking on Flutter using Huawei Push Kit’s Custom Intents
    accompanying github repository文章中包含代码。

    关于flutter - 如何使用 Flutter Huawei Push Kit 插件获取推送通知点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63451613/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com