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 > triggerDeeplink
为 true
将不会触发深层链接(仅当您自己处理重定向时才将其设置为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
更多关于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
:
- 导入插件:
在你的Dart文件中导入linkrunner
插件:
import 'package:linkrunner/linkrunner.dart';
- 初始化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
依赖。
- 在应用中添加可点击的链接:
为了使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
插件通过全局监听来处理应用内的链接点击事件,你只需在应用启动时初始化它并提供一个链接处理器函数即可。这样,当用户点击应用内的任何标准链接时,该链接就会被捕获并传递给你的处理器函数进行处理。