Flutter网站数据统计插件webinstats_flutter_plugin的使用
Flutter网站数据统计插件webinstats_flutter_plugin的使用
webinstats_flutter_plugin
是一个用于在您的 Flutter 应用程序中集成 webinstats SDK 的插件。本文档将指导您如何在 Flutter 应用程序中使用此插件。
开始使用
- 在
pubspec.yaml
文件中添加插件的最新版本。 - 对于 iOS,进入
ios
文件夹并运行pod install
。 - 导入插件:
import 'package:webinstats_flutter/webinstats_flutter.dart';
- 对于 Android,您需要在
~/android/app/src/main/AndroidManifest.xml
文件中添加以下行:<uses-library android:name="org.apache.http.legacy" android:required="false"/>
可用方法
插件提供了以下方法:
execute
addItem
createEvent
setPushClickCallback
推送通知
要将推送通知产品添加到应用程序中,请遵循以下步骤:
Android
- 初始化 Firebase 项目,并在
google-services.json
文件中添加您的 Firebase 应用程序配置文件(位于~/android/app
下)。 - 在
pubspec.yaml
文件中添加firebase_core
并初始化 Firebase:void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); runApp(const MyApp()); }
- 在
app/build.gradle
文件中添加webinstats
依赖:dependencies { implementation 'com.github.WebInStats:android_wis:3.0.55@aar' }
- 在
AndroidManifest.xml
文件中添加以下行:<!-- 添加您的通知图标源文件到 AndroidManifest.xml --> <!-- 在 5.0 API 21 之前 [@drawable](/user/drawable)/file_name --> <meta-data android:name="push_notification_icon_old" android:resource="__icon_source_file"/> <!-- 在 5.0 API 21 及以上 [@drawable](/user/drawable)/file_name --> <meta-data android:name="push_notification_icon" android:resource="@__icon_source_file"/> <!-- 在 8.0 API 26 及以上 --> <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="default_notification_channel_id"/> <service android:name="webinstats.android_wis.WebinstatsMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> <service android:name="webinstats.android_wis.WisHMSMessagingService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT"/> </intent-filter> </service>
- 在
android/build.gradle
文件中添加maven { url 'https://jitpack.io' }
:allprojects { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } }
- 在
execute
方法中添加_enable_push:1
以启用推送通知:ElevatedButton( child: const Text('Execute'), onPressed: () => Webinstats.execute( companyId, domain, { "companyId": "__COMPANY_ID__", "domain": '//__YOUR_DOMAIN__.webinstats.com', 'p': "Other", 'wistest': "full", '_enable_push': '1', 'cuid': '0' }, ), ),
现在,您可以从门户接收推送通知了。如果希望跟踪 Android 应用程序的通知点击事件,请在 MainActivity.java
类中添加以下代码:
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle bundle = intent.getExtras();
final Uri appLinkData = intent.getData();
new Webinstats("//__YOUR_DOMAIN__.webinstats.com","__COMPANY_ID__","0").trackDeepLink(this,appLinkData,bundle);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
Uri appLinkData = getIntent().getData();
new Webinstats("//__YOUR_DOMAIN__.webinstats.com", "__COMPANY_ID__", "0").trackDeepLink(this, appLinkData, bundle);
}
iOS
- 在 Xcode 的 Capabilities 标签页中启用推送通知。
- 初始化 Firebase 项目,并添加您的 Firebase 应用程序配置文件(
GoogleService-info.plist
)。 - 在
AppDelegate.m
文件中导入必要的库:[@import](/user/import) iOS_wis; [@import](/user/import) FirebaseMessaging;
- 在
didFinishLaunchingWithOptions
方法的末尾添加以下行:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] register:application didFinishLaunchingWithOptions:launchOptions]; return YES; }
- 在
AppDelegate.m
文件中添加以下方法:- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] didReceiveNotification:application didReceiveRemoteNotification:userInfo]; }
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ [Webinstats registerWithDeviceTokenWithDeviceToken:deviceToken]; }
现在,您可以从门户接收推送通知了。您可以通过添加以下函数来设置 iOS 的推送点击回调:
ElevatedButton(
child: const Text('Set Push Click Callback'),
onPressed: () => Webinstats.setPushClickCallback(
(data) {
print('setPushClickCallback: data from the app: $data');
},
'COMPANY_ID',
),
),
完整示例代码
以下是完整的示例代码,展示了如何在 Flutter 应用程序中使用 webinstats_flutter_plugin
插件。
import 'package:flutter/material.dart';
import 'package:webinstats_flutter/webinstats_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
static const companyId = "1710";
static const domain = "//bosc.webinstats.com/";
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Column(
children: [
ElevatedButton(
child: const Text('Execute'),
onPressed: () => Webinstats.execute(
companyId,
domain,
{
"companyId": "1710",
"domain": '//bosc.webinstats.com/',
'p': "Other",
'wistest': "full",
'_enable_push': '1',
'cuid': '34'
},
),
),
ElevatedButton(
child: const Text('Add Item'),
onPressed: () => Webinstats.addItem(
companyId,
domain,
"123",
"1",
"1300.50",
"shoes",
"Adidas White Sneaker",
),
),
ElevatedButton(
child: const Text('Create event'),
onPressed: () => Webinstats.createEvent(
companyId,
domain,
"Flutter",
{},
),
),
ElevatedButton(
child: const Text('Set Push Click Callback'),
onPressed: () => Webinstats.setPushClickCallback(
(data) {
print('setPushClickCallback: data from the app: $data');
},
'1710',
),
),
],
),
),
);
}
}
更多关于Flutter网站数据统计插件webinstats_flutter_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter网站数据统计插件webinstats_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
webinstats_flutter_plugin
是一个用于在 Flutter 应用中集成 WebinStats 数据统计的插件。WebinStats 是一个网站数据分析工具,可以帮助你跟踪和分析用户行为。通过这个插件,你可以在 Flutter 应用中轻松集成 WebinStats,并开始收集用户数据。
安装
首先,你需要在 pubspec.yaml
文件中添加 webinstats_flutter_plugin
依赖:
dependencies:
webinstats_flutter_plugin: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
配置
-
获取 WebinStats 的站点 ID:在使用插件之前,你需要在 WebinStats 上注册一个站点,并获取到该站点的唯一 ID。
-
初始化插件:在
main.dart
文件中初始化插件,并传入你的站点 ID。
import 'package:flutter/material.dart';
import 'package:webinstats_flutter_plugin/webinstats_flutter_plugin.dart';
void main() {
runApp(MyApp());
// 初始化 WebinStats 插件
WebinstatsFlutterPlugin.init('YOUR_SITE_ID');
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
使用
- 跟踪页面访问:你可以在每个页面的
initState
方法中调用trackPageView
来跟踪页面访问。
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
void initState() {
super.initState();
// 跟踪页面访问
WebinstatsFlutterPlugin.trackPageView('/home');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: Text('Home Page'),
),
);
}
}
- 跟踪自定义事件:你可以使用
trackEvent
方法来跟踪自定义事件。
WebinstatsFlutterPlugin.trackEvent('button_click', {'button_id': 'submit_button'});
注意事项
- 站点 ID:确保你使用的是正确的站点 ID,否则数据将无法正确发送到 WebinStats。
- 隐私政策:在使用数据统计工具时,确保你遵守相关的隐私政策和法律法规,告知用户数据的收集和使用方式。
调试
你可以在 WebinStats 的仪表板中查看收集到的数据,确保插件正常工作。如果数据没有正确显示,可以检查以下几点:
- 确保站点 ID 正确。
- 确保设备或模拟器有网络连接。
- 检查是否有错误日志输出。
示例代码
以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 webinstats_flutter_plugin
:
import 'package:flutter/material.dart';
import 'package:webinstats_flutter_plugin/webinstats_flutter_plugin.dart';
void main() {
runApp(MyApp());
// 初始化 WebinStats 插件
WebinstatsFlutterPlugin.init('YOUR_SITE_ID');
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
void initState() {
super.initState();
// 跟踪页面访问
WebinstatsFlutterPlugin.trackPageView('/home');
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 跟踪自定义事件
WebinstatsFlutterPlugin.trackEvent('button_click', {'button_id': 'submit_button'});
},
child: Text('Click Me'),
),
),
);
}
}