Flutter链接处理插件linkrunner的使用

Flutter链接处理插件linkrunner的使用

安装

步骤1:安装linkrunner

通过命令行安装

运行以下命令:

flutter pub add linkrunner

或者

手动添加依赖

pubspec.yaml 文件的 dependencies 下添加 linkrunner

dependencies:
    linkrunner: ^0.7.9

然后运行:

flutter pub get

以安装新的依赖项。

步骤2:Android更新

app/build.gradle 文件中添加以下内容:

dependencies {
    ...
    implementation("com.android.installreferrer:installreferrer:2.2")
}

使用

初始化

你需要你的项目令牌来初始化包。将它放在 main 函数中:

import 'package:linkrunner/main.dart';

// 初始化包
final linkrunner = LinkRunner();

void main() async {
    // 在调用.init方法之前调用.ensureInitialized方法
    WidgetsFlutterBinding.ensureInitialized();

    final init = await linkrunner.init("YOUR_PROJECT_TOKEN");
    runApp(MyApp());
}

初始化响应类型

{
  ip_location_data: {
    ip: string;
    city: string;
    countryLong: string;
    countryShort: string;
    latitude: number;
    longitude: number;
    region: string;
    timeZone: string;
    zipCode: string;
  };
  deeplink: string;
  root_domain: boolean;
  campaign_data: {
    id: string;
    name: string;
    type: "ORGANIC" | "INORGANIC";
    ad_network: "META" | "GOOGLE" | null;
    group_name: string | null;
    asset_group_name: string | null;
    asset_name: string | null;
  };
}

触发

在您的引导完成并且主堆栈加载后调用此函数:

import 'package:linkrunner/main.dart';

void trigger() async {
    final trigger = await linkrunner.trigger(
        userData: LRUserData(
                id: '1',
                name: 'John Doe', // 可选
                phone: '9583849238', // 可选
                email: 'support@linkrunner.io', // 可选
            ),
        data: {}, // 您可能需要的任何其他数据
        config: TriggerConfig(
            triggerDeeplink: true // 默认为true
        )
    );
  }

设置 config > triggerDeeplinktrue 将不会触发深层链接(仅当您自己处理重定向时才将其设置为false)。

您可以在 data 属性中传递任何其他与用户相关的数据。

触发响应类型

{
  ip_location_data: {
    ip: string;
    city: string;
    countryLong: string;
    countryShort: string;
    latitude: number;
    longitude: number;
    region: string;
    timeZone: string;
    zipCode: string;
  };
  deeplink: string;
  root_domain: boolean;
  trigger: boolean; // 如果为false,则不会触发深层链接
}

注意:trigger 的值仅在用户首次触发该功能时为true,以防止不必要的重定向。

捕获收入

在支付确认后调用此函数:

import 'package:linkrunner/models/lr_capture_payment.dart';

void capturePayment() async {
    await linkrunner.capturePayment(
        capturePayment: LRCapturePayment(
            userId: '666',
            amount: 24168, // 发送金额时只使用一种货币
            paymentId: 'AJKHAS' // 可选但推荐
        ),
    );
  }

注意:如果您接受多种货币的付款,在调用上述函数之前,请将其转换为一种货币。

移除捕获的支付收入

在支付被取消或退款后调用此函数:

import 'package:linkrunner/models/lr_remove_payment.dart';

void removeCapturedPayment() async {
    await linkrunner.removePayment(
        removePayment: LRRemovePayment(
            userId: '666',
            paymentId: 'AJKHAS' // 必须提供支付ID或用户ID之一
        ),
    );
  }

更多关于Flutter链接处理插件linkrunner的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter链接处理插件linkrunner的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter应用中处理链接可以使用linkrunner插件,它提供了一种简便的方式来监听和处理应用内的链接。以下是一个使用linkrunner插件的基本代码案例,展示了如何集成和使用该插件来处理链接。

首先,确保你已经在pubspec.yaml文件中添加了linkrunner依赖:

dependencies:
  flutter:
    sdk: flutter
  linkrunner: ^最新版本号  # 请替换为实际发布的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤使用linkrunner

  1. 导入插件

在你的Dart文件中导入linkrunner插件:

import 'package:linkrunner/linkrunner.dart';
  1. 初始化LinkRunner

在应用启动时初始化LinkRunner,并设置链接处理器。例如,在main.dart文件中:

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

void main() {
  // 初始化LinkRunner
  LinkRunner.initialize(onLinkClicked: (Uri uri) {
    // 处理点击的链接
    _handleLink(uri);
  });

  runApp(MyApp());
}

void _handleLink(Uri uri) {
  // 在这里处理链接,例如打开浏览器或执行其他操作
  print('Clicked link: $uri');
  // 例如,使用url_launcher打开网页
  // if (await canLaunchUrl(uri)) {
  //   await launchUrl(uri);
  // }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('LinkRunner Example'),
        ),
        body: Center(
          child: Text('Click on a link to see it handled by LinkRunner.'),
        ),
      ),
    );
  }
}

注意:在上面的代码中,我们注释掉了使用url_launcher打开网页的部分,因为url_launcher是另一个插件,需要单独添加依赖。如果你想要打开网页,可以取消注释并添加url_launcher依赖。

  1. 在应用中添加可点击的链接

为了使LinkRunner能够捕获链接点击事件,你需要在TextWidget或其他Widget中使用LinkText或其他支持链接的Widget,并确保它们被LinkRunner所包裹或识别。不过,linkrunner插件通常通过全局监听来处理链接,因此你不需要对TextWidget做特殊处理,只要确保链接是以标准方式(如http://或https://)呈现的,用户点击时就会被捕获。

例如,你可以在TextWidget中显示一个链接:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('LinkRunner Example'),
        ),
        body: Center(
          child: Text.rich(
            TextSpan(
              children: [
                TextSpan(text: 'Click here to visit '),
                TextSpan(
                  text: 'Flutter.dev',
                  style: TextStyle(color: Colors.blue),
                  recognizer: TapGestureRecognizer()
                    ..onTap = () {
                      // 这里通常不需要手动处理,因为LinkRunner会全局捕获
                      // 但为了演示,我们直接打印链接
                      Uri uri = Uri.parse('https://flutter.dev');
                      _handleLink(uri);
                    },
                ),
                TextSpan(text: '.'),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

注意:在实际使用中,你通常不需要在TextSpan中手动添加TapGestureRecognizer,因为linkrunner会自动捕获标准链接的点击事件。上面的代码只是为了演示如何在不依赖linkrunner自动捕获的情况下手动处理链接点击。

总结:linkrunner插件通过全局监听来处理应用内的链接点击事件,你只需在应用启动时初始化它并提供一个链接处理器函数即可。这样,当用户点击应用内的任何标准链接时,该链接就会被捕获并传递给你的处理器函数进行处理。

回到顶部