Flutter插件lemnisk_plugin的使用

Flutter插件lemnisk_plugin的使用

该项目是用于跟踪事件、捕获屏幕视图和识别用户在基于Flutter的应用程序上的lemnisk插件。它还集成了以下设备端目的地:

  1. GA4
  2. AppsFlyer
  3. Clevertap

Flutter插件lemnisk_plugin开始使用

import 'package:lemnisk_plugin/AttributeBuilder.dart';
import 'package:lemnisk_plugin/LemniskFlutterCore.dart';
import 'package:lemnisk_plugin/LemniskHelper.dart';

LemniskHelper.configure(SERVER_URL, WRITE_KEY, lemniskFirebaseCore, lemniskApsflyer, lemniskCleverTapCore);

检查以下示例以了解如何在基于Flutter的应用程序中跟踪事件、捕获屏幕视图和识别用户。

示例代码

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:lemnisk_plugin/AttributeBuilder.dart';
import 'package:lemnisk_plugin/LemniskFlutterCore.dart';
import 'package:lemnisk_plugin/LemniskHelper.dart';
import 'package:clevertap_plugin/clevertap_plugin.dart';
import 'dart:io' show Platform;

void main() {
  //lemnisk服务器需求
  String SERVER_URL = "xyz";
  String WRITE_KEY = "xyz";

  //Firebase分析需求
  LemniskFirebaseCore lemniskFirebaseCore = LemniskFirebaseCore(
    projectName: "xxx",
    enable: false,
    appId: "xxx",
    apiKey: "xxx",
    projectId: "xxx",
    messagingSenderId: "xxx",
  );

  //AppsFlyer需求
  LemniskApsflyerCore lemniskApsflyer = LemniskApsflyerCore(
    enable: false,
    afAppId: "xxx",
    afDevKey: "xxx",
  );

  //Clevertap需求
  LemniskCleverTapCore lemniskCleverTapCore = LemniskCleverTapCore(
      enable: true,
      isDebug: true
  );

  LemniskHelper.configure(SERVER_URL, WRITE_KEY, lemniskFirebaseCore,
      lemniskApsflyer, lemniskCleverTapCore);

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  void getIdentify() {
    AttributeBuilder attributeBuilder = AttributeBuilder();
    attributeBuilder.properties['key1'] = 'value1';
    attributeBuilder.properties['key2'] = 'value2';
    attributeBuilder.properties['lat'] = 13.291860;
    attributeBuilder.properties['long'] = 77.751808;

    OtherBuilder otherBuilder = OtherBuilder();
    otherBuilder.otherid['otherId'] = 'otherId_value';

    LemniskHelper.identify("user_id", attributeBuilder, otherBuilder);
  }

  void getScreen() {
    AttributeBuilder attributeBuilder = AttributeBuilder();
    attributeBuilder.properties['key1'] = 'value1';
    attributeBuilder.properties['key2'] = 'value2';

    OtherBuilder otherBuilder = OtherBuilder();
    otherBuilder.otherid['otherId'] = 'otherId_value';

    LemniskHelper.screen("MainActivity", attributeBuilder, otherBuilder);
  }

  void getTrack() {
    AttributeBuilder attributeBuilder = AttributeBuilder();
    attributeBuilder.properties['properties'] = 'material';
    attributeBuilder.properties['button'] = 'Track event from different app';

    OtherBuilder otherBuilder = OtherBuilder();
    otherBuilder.otherid['trackerId'] = '6791c47a-0178-47bc-8711-86a2c67b2255';

    LemniskHelper.track("MainDartFile", attributeBuilder, otherBuilder);
  }

  void setupCTPush() {
    LemniskHelper.setPushToken("token");

    if(Platform.isIOS) {
      CleverTapPlugin.registerForPush();
    }
    CleverTapPlugin.setPushToken("token");
    if (Platform.isAndroid) {
      CleverTapPlugin.createNotificationChannel(
          "channelId", "channelName", "channelDescription", 3, true);
    }
  }

  void clevertapAppsflyerSink() {
    var appsflyerSdk = LemniskHelper.getAppsFlyerSdk();
    CleverTapPlugin.getCleverTapID().then((ctId) => appsflyerSdk?.setCustomerUserId(ctId!));
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Lemnisk Flutter SDK'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                child: Text('Track'),
                onPressed: () {
                  getTrack();
                },
                style: ElevatedButton.styleFrom(
                  primary: Colors.blue,
                  padding: EdgeInsets.symmetric(horizontal: 35, vertical: 10),
                  textStyle:
                      TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
                ),
              ),
              SizedBox(
                height: 20,
              ),
              ElevatedButton(
                child: Text('Screen'),
                onPressed: () {
                  getScreen();
                },
                style: ElevatedButton.styleFrom(
                  primary: Colors.blue,
                  padding: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
                  textStyle:
                      TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
                ),
              ),
              SizedBox(
                height: 20,
              ),
              ElevatedButton(
                child: Text('Identify'),
                onPressed: () {
                  getIdentify();
                },
                style: ElevatedButton.styleFrom(
                  primary: Colors.blue,
                  padding: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
                  textStyle:
                      TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
                ),
              ),
              SizedBox(
                height: 20,
              ),
              ElevatedButton(
                child: Text('clevertapPushSetup'),
                onPressed: () {
                  setupCTPush();
                },
                style: ElevatedButton.styleFrom(
                  primary: Colors.blue,
                  padding: EdgeInsets.symmetric(horizontal: 30, vertical: 10),
                  textStyle:
                      TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

对于Clevertap目的地集成,请添加以下配置:

Android:

请在AndroidManifest.xml文件中添加以下配置,并替换实际的Clevertap账户ID和令牌值。

<meta-data
android:name="CLEVERTAP_ACCOUNT_ID"
android:value="XXX-XXX-XXXX"/>
<meta-data
android:name="CLEVERTAP_TOKEN"
android:value="XXX-XXX-XXX"/>
<meta-data
android:name="CLEVERTAP_USE_GOOGLE_AD_ID"
android:value="1"/>

iOS:

请在Info.plist文件中添加以下配置,并替换实际的Clevertap账户ID和令牌值。

  1. 添加属性CleverTapAccountID作为字符串并设置其值。
  2. 添加属性CleverTapToken作为字符串并设置其值。

通过Clevertap发送推送通知:

Android:

请在AndroidManifest.xml文件中添加以下配置。

<service android:name="com.clevertap.android.sdk.pushnotification.fcm.FcmMessageListenerService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

在Flutter应用中通用配置:

然后添加以下代码,并替换实际的推送令牌、通道ID、通道名称和通道描述。

LemniskHelper.setPushToken("token");

if(Platform.isIOS) {
  CleverTapPlugin.registerForPush();
}
CleverTapPlugin.setPushToken("token");
if (Platform.isAndroid) {
  CleverTapPlugin.createNotificationChannel(
      "channelId", "channelName", "channelDescription", 3, true);
}

对于Clevertap自动将数据下沉到Appsflyer:

此Appsflyer SDK对象也可用于统一深度链接。

var appsflyerSdk = LemniskHelper.getAppsFlyerSdk();
CleverTapPlugin.getCleverTapID().then((ctId) => appsflyerSdk?.setCustomerUserId(ctId!));

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

1 回复

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


当然,作为一个IT专家,我可以为你提供一个关于如何使用Flutter中名为lemnisk_plugin的未知功能插件的代码案例。不过,由于这是一个假设的插件,具体的功能和API可能会有所不同。但我会基于一般Flutter插件的使用方法来提供一个示例代码框架。

首先,确保你已经在pubspec.yaml文件中添加了lemnisk_plugin依赖,并运行了flutter pub get来获取插件。

dependencies:
  flutter:
    sdk: flutter
  lemnisk_plugin: ^x.y.z  # 假设的版本号

接下来,在你的Flutter项目中导入并使用该插件。以下是一个简单的示例,展示了如何初始化插件并调用其假设的某个功能(由于我们不知道具体功能,这里仅作假设)。

import 'package:flutter/material.dart';
import 'package:lemnisk_plugin/lemnisk_plugin.dart'; // 导入插件

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Lemnisk Plugin Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  LemniskPlugin? _lemniskPlugin;
  String? _result;

  @override
  void initState() {
    super.initState();
    // 初始化插件
    _lemniskPlugin = LemniskPlugin();

    // 假设插件有一个名为`performAction`的异步方法
    _lemniskPlugin!.performAction()?.then((result) {
      setState(() {
        _result = result;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Lemnisk Plugin Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Plugin Result:',
            ),
            Text(
              _result ?? 'Loading...',
              style: TextStyle(fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml文件中添加了lemnisk_plugin依赖。
  2. MyApp类中创建了应用的主界面。
  3. MyHomePage类中初始化了LemniskPlugin插件,并假设插件有一个名为performAction的异步方法,该方法返回一个结果。
  4. 使用setState方法更新UI以显示插件返回的结果。

请注意,由于lemnisk_plugin是一个假设的插件,实际使用时你需要参考该插件的官方文档来了解其真实的功能和API。如果lemnisk_plugin有特定的初始化步骤或配置要求,也请确保按照文档进行相应的设置。

回到顶部