Flutter网站数据统计插件webinstats_flutter_plugin的使用

Flutter网站数据统计插件webinstats_flutter_plugin的使用

webinstats_flutter_plugin 是一个用于在您的 Flutter 应用程序中集成 webinstats SDK 的插件。本文档将指导您如何在 Flutter 应用程序中使用此插件。

开始使用

  1. pubspec.yaml 文件中添加插件的最新版本。
  2. 对于 iOS,进入 ios 文件夹并运行 pod install
  3. 导入插件:
    import 'package:webinstats_flutter/webinstats_flutter.dart';
    
  4. 对于 Android,您需要在 ~/android/app/src/main/AndroidManifest.xml 文件中添加以下行:
    <uses-library android:name="org.apache.http.legacy" android:required="false"/>
    

可用方法

插件提供了以下方法:

  1. execute
  2. addItem
  3. createEvent
  4. setPushClickCallback

推送通知

要将推送通知产品添加到应用程序中,请遵循以下步骤:

Android

  1. 初始化 Firebase 项目,并在 google-services.json 文件中添加您的 Firebase 应用程序配置文件(位于 ~/android/app 下)。
  2. pubspec.yaml 文件中添加 firebase_core 并初始化 Firebase:
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
      runApp(const MyApp());
    }
    
  3. app/build.gradle 文件中添加 webinstats 依赖:
    dependencies {
        implementation 'com.github.WebInStats:android_wis:3.0.55@aar'
    }
    
  4. 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>
    
  5. android/build.gradle 文件中添加 maven { url 'https://jitpack.io' }
    allprojects {
        repositories {
            google()
            mavenCentral()
            maven { url 'https://jitpack.io' }
        }
    }
    
  6. 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

  1. 在 Xcode 的 Capabilities 标签页中启用推送通知。
  2. 初始化 Firebase 项目,并添加您的 Firebase 应用程序配置文件(GoogleService-info.plist)。
  3. AppDelegate.m 文件中导入必要的库:
    [@import](/user/import) iOS_wis;
    [@import](/user/import) FirebaseMessaging;
    
  4. 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;
    }
    
  5. 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

1 回复

更多关于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 来安装依赖。

配置

  1. 获取 WebinStats 的站点 ID:在使用插件之前,你需要在 WebinStats 上注册一个站点,并获取到该站点的唯一 ID。

  2. 初始化插件:在 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(),
    );
  }
}

使用

  1. 跟踪页面访问:你可以在每个页面的 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'),
      ),
    );
  }
}
  1. 跟踪自定义事件:你可以使用 trackEvent 方法来跟踪自定义事件。
WebinstatsFlutterPlugin.trackEvent('button_click', {'button_id': 'submit_button'});

注意事项

  • 站点 ID:确保你使用的是正确的站点 ID,否则数据将无法正确发送到 WebinStats。
  • 隐私政策:在使用数据统计工具时,确保你遵守相关的隐私政策和法律法规,告知用户数据的收集和使用方式。

调试

你可以在 WebinStats 的仪表板中查看收集到的数据,确保插件正常工作。如果数据没有正确显示,可以检查以下几点:

  1. 确保站点 ID 正确。
  2. 确保设备或模拟器有网络连接。
  3. 检查是否有错误日志输出。

示例代码

以下是一个完整的示例代码,展示了如何在 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'),
        ),
      ),
    );
  }
}
回到顶部