flutter_turbolink_attribution 2.0.4 copy "flutter_turbolink_attribution: ^2.0.4" to clipboard
flutter_turbolink_attribution: ^2.0.4 copied to clipboard

TurboLink's official Flutter SDK for App Attribution & Campaign.

example/lib/main.dart

import 'dart:async';
import 'dart:ffi';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_turbolink_attribution/flutter_turbolink_attribution.dart';
import 'package:flutter_turbolink_attribution/turbolink_custom_properties.dart';
import 'package:flutter_turbolink_attribution/turbolink_deeplink_properties.dart';
import 'package:flutter_turbolink_attribution_example/login.dart';
// import 'package:share_plus/share_plus.dart';

final navigatorKey = GlobalKey<NavigatorState>();

void main() {
  print("main");
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

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

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  bool isDark = false;
  bool isFullscreen = false;

  void _showDialog() {
    WidgetsBinding.instance.addPostFrameCallback((_) {
      showDialog(
        context: navigatorKey.currentContext!,
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text('标题'),
            content: Text('这是一个弹窗示例。'),
            actions: <Widget>[
              TextButton(
                child: Text('关闭'),
                onPressed: () {
                  Navigator.of(context).pop();
                },
              ),
            ],
          );
        },
      );
    });

  }

  Future<void> _share() async {
    // Share.share("Url Test:https://jeffapp.allapp.link/crpajb0gpf6gtqi95itg");
    // final shareResult = await Share.shareUri(Uri.parse("https://jeffapp.allapp.link/crpajb0gpf6gtqi95itg"));
  }

  @override
  void initState() {
    print("initState");
    super.initState();
    initTurbolinkSDK();

    SystemChrome.setPreferredOrientations([
      DeviceOrientation.portraitUp,
    ]);
  }

  // void initTurboLinkSDK2() async {
  //   //开启TurboLink日志
  //   TurbolinkSdk.enableLogger();
  //
  //   //设置语言
  //   TurbolinkSdk.setLang('jp');
  //
  //   //打开app,登录态,设置用户id, https://help.turbolink.cc/developers/flutter/integrationSDK/
  //   //TurbolinkSdk.setAppUserInfo("<你的app用户ID/加密后的用户ID>", "<昵称>", "<用户头像URL>", ["<用户等级1>", "<用户等级2>"], "<邀请码|之前app没有邀请码机制留空>");
  //   TurbolinkSdk.setAppUserInfo("jeff987", "", "", ["ok", "jeff"], "3982");
  //
  //
  //   // 登录监听回调,在用户登录时进入活动,此时没有登录态,需要这个监听,跳转到app的登录页面
  //   TurbolinkSdk.withLoginListenerCallback(() {
  //     // navigatorKey.currentState?.push(MaterialPageRoute(builder: (context) => LoginWidget()));
  //   });
  //
  //   // 自定义事件监听回调,用户点击做任务时,会回调这个,需要根据在Dashboard配置的key:value来跳转到对应的页面完成任务
  //   TurbolinkSdk.withEventListenerCallback((args) {
  //     print("TurboLinkSDK, withEventListenerCallback:${args.arguments}:${args.scheme}:${args.campaignUrl}:${args.additionalParam}");
  //     // 关闭活动页
  //     TurbolinkSdk.closeCampaignPage();
  //   });
  //
  //   // 事件回调, 当SDK有事件请求后,成功与否都会回调这个事件,这里可以监听相关的参数,比如做:延迟深度链接。
  //   TurbolinkSdk.withEventCallback((args) {
  //     print("TurboLinkSDK2, withEventCallback:${args.linkHashId}:${args.blackBox}:${args.deviceStatus}:linkData:${args.linkData}:${args.campaignData}:${args.fromUserData['userId']}:${args.fromUserData['inviteCode']}");
  //   });
  //
  //   // 活动页面组件跳转监听埋点回调, 比如点击活动中奖奖品的“去使用”会回调这个监听
  //   TurbolinkSdk.withRedirectListenerCallback((args) {
  //     TurbolinkSdk.closeCampaignPage();
  //     print("TurboLinkSDK, withRedirectListenerCallback: ${args.campaignId}_${args.campaignTitle}_${args.campaignLang}_${args.campaignUrl}_${args.user}_${args.type}_${args.appUrl}_${args.rewardTitle}_${args.kvData.values}_trans_id=${args.transId}");
  //   });
  //
  //   // 初始化
  //   TurbolinkSdk.autoInstance('coae59progtocgji0vug', '6fbbbbe1f68712212cd522d66c241e', '6f3c7c7c24d2fdfdf3256968e56ea4b7b4bee8');
  //   // 打开活动页
  //   // TurbolinkSdk.loadUrl("https://jeffapp.c.allapp.link/c?l=cuiu3pprogtnuqc0jhdg&c=rC");
  // }

  void initTurbolinkSDK() async {
    // TurbolinkSdk.enableLogger();

    // TurbolinkSdk.setAppUser("jeff", "");
    // TurbolinkSdk.setAppUserInfo("jeffgood", "", "", ["ok", "jeff"], "3982");
    TurbolinkSdk.setLang('jp');

    TurbolinkSdk.withCampaignCreateCallback((result) {
      print("TurboLinkSDK, withCampaignCreateCallback:" + result);
    });
    TurbolinkSdk.withCampaignDestroyCallback((result) {
      print("TurboLinkSDK, withCampaignDestroyCallback:" + result);
    });

    TurbolinkSdk.withLoginListenerCallback(() {
      print("TurboLinkSDK, withLoginListenerCallback:");
      navigatorKey.currentState?.push(MaterialPageRoute(builder: (context) => LoginWidget()));
    });
    TurbolinkSdk.withRegListenerCallback(() {
      print("TurboLinkSDK, withRegListenerCallback");
      navigatorKey.currentState?.push(MaterialPageRoute(builder: (context) => LoginWidget()));
    });
    TurbolinkSdk.withEventListenerCallback((args) {
      print("TurboLinkSDK, withEventListenerCallback:${args.arguments}:${args.scheme}:${args.campaignUrl}:${args.additionalParam}");
      // TurbolinkSdk.loadUrl("https://jeffapp.c.allapp.link/c?l=crpaebp0b4mknpkano20&c=cM");
      TurbolinkSdk.closeCampaignPage();


      // TurbolinkSdk.openLoading();
      // Timer(Duration(seconds: 5), () {
      //   TurbolinkSdk.closeLoading();
      // });
    });
    // TurbolinkSdk.withEventCallback((args) {
    //   print(args.deviceStatus);
    // });
    TurbolinkSdk.withEventCallback((args) {
      // print("TurboLinkSDK, withEventCallback:${args.linkHashId}:${args.blackBox}:${args.deviceStatus}:linkData:${args.linkData}:${args.campaignData}:${args.fromUserData['userId']}:${args.fromUserData['inviteCode']}");
    });

    TurbolinkSdk.withPointListenerCallback((args) {
      print("TurboLinkSDK, withPointListenerCallback: ${args.campaignTitle}:${args.campaignLang}:${args.campaignUrl}:${args.user}:${args.position}");
    });
    // TurbolinkSdk.withShareListenerCallback((args) {
    //   print("TurboLinkSDK, withShareListenerCallback: ${args.sharingText}: ${args.shareText}: ${args.shareLink} :${args.noInstallPrompt}: ${args.targetScheme}: ${args.campaignId}");
    // });

    TurbolinkSdk.withRedirectListenerCallback((args) {
      TurbolinkSdk.closeCampaignPage();
      print("TurboLinkSDK, withRedirectListenerCallback: ${args.campaignId}_${args.campaignTitle}_${args.campaignLang}_${args.campaignUrl}_${args.user}_${args.type}_${args.appUrl}_${args.rewardTitle}_${args.kvData.values}_trans_id=${args.transId}");
    });

    bool isInclude = TurbolinkSdk.isUrlBelongTurboLink("https://jeffapp.c.allapp.link/c?l=crbaic10b4mp5b9bi7p0&c=sO");
    // TurbolinkSdk.setAppUser("ben", "v1");
    TurbolinkSdk.setScreenOrientationAll();
    TurbolinkSdk.setLaunchCampaignDelay(-1);
    // TurbolinkSdk.setNightMode(true);
    TurbolinkSdk.setInitTitle("加入中");
    TurbolinkSdk.setTitleSize(16);
    TurbolinkSdk.setIdSimpleMode();
    TurbolinkSdk.setSimpleParameterMode();
    // TurbolinkSdk.setAppUserInfo("jeff", "", "", ["ok", "jeff"], "3982");
    // TurbolinkSdk.setAppUser("jeff123", "ok");

    // TurbolinkSdk.setFullScreenMode(true);

    // TurbolinkSdk.loadUrl("");
    TurbolinkSdk.setLoadingPic("images/loading.gif");

    // TurbolinkSdk.withEventCallback((args) {
    //   print("TurboLinkSDK, withEventCallback:${args.linkHashId}:${args.blackBox}:${args.deviceStatus}:${args.linkData}:${args.campaignData}:${args.fromUserData['userId']}:${args.fromUserData['inviteCode']}");
    // });
    /**
     * For Prod
     */
    TurbolinkSdk.autoInstance('coae59progtocgji0vug', '6fbbbbe1f68712212c895522d66c241e', '6f3c7c7c24d2ba6f0d53256968e56ea4b7b4bee8');

    /**
     * Dev
     */
    // TurbolinkSdk.autoInstance('X5c6Zz8CeUcwim82YXtsh9', 'uX9GdP1fTCEeJLwaRD4FoRGi25jb4h', '2609db6594ceb3bcf35c2e621a0f6a86feb78eae');

    // TurbolinkSdk.setNightMode(true);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        appBarTheme: AppBarTheme.of(context).copyWith(
          // backgroundColor: Colors.green,
          iconTheme: IconThemeData(color: Colors.black),
          color: Colors.deepPurpleAccent,
          foregroundColor: Colors.black,
          systemOverlayStyle: SystemUiOverlayStyle(
            statusBarColor: Colors.green,
            statusBarIconBrightness: Brightness.dark,
            statusBarBrightness: Brightness.light,
          ),
          // foregroundColor: Colors.white
        ),
      ),
      navigatorKey: navigatorKey,
      debugShowCheckedModeBanner: false,
      // home: MainWidget(_platformVersion),
      home: Builder(
        builder: (context) => Scaffold(
            appBar: AppBar(
              title: const Text('Plugin example app'),
              // systemOverlayStyle: SystemUiOverlayStyle(
              //   statusBarBrightness: Brightness.dark,
              // ),
            ),
            body: Column(
              children: [
                Container(
                  child: Text('Running on: $_platformVersion\n'),
                ),
                Container(
                  child: TextButton(
                    onPressed: (){
                      print("onPressed");
                      TurbolinkSdk.loadUrl("https://jeffapp.c.allapp.link/c?l=d2qnvbta5kleskjsg86g&c=wi");
                      // Navigator.push(context,MaterialPageRoute(builder: (context) => LoginWidget()));
                    },
                    child: Text("活动New"),
                  ),
                ),
                TextButton(
                  onPressed: () {
                    Navigator.push(context,MaterialPageRoute(builder: (context) => LoginWidget()));
                  },
                  child: Text("Login Widget"),
                ),
                TextButton(
                  onPressed: () {
                    TurbolinkSdk.logout();

                  },
                  child: Text("Logout"),
                ),
                TextButton(
                  onPressed: () {
                    TurboLinkCustomProperties customData = TurboLinkCustomProperties()
                        .addKeyValue("name", "ben")
                        .addKeyValue("money", "1")
                        .addKeyValue("age", "22");
                    TurbolinkSdk.customEvent("payment", customData);
                  },
                  child: Text("自定义事件"),
                ),
                TextButton(
                  onPressed: () {
                    TurbolinkSdk.register("jeff", "jeff register", "https://www.turbolink.ai", ["ben", "jeff"], "33399");
                  },
                  child: Text("register"),
                ),
                TextButton(
                  onPressed: () {
                    TurbolinkSdk.codeSearch("https://jeffapp.allapp.link/crgg7dogpf6ln78rjbdg");
                    // TurbolinkSdk.codeSearch("143.42¥8QJXKXOTv2¥");
                  },
                  child: Text("codeSearch"),
                ),
                TextButton(
                  onPressed: () {
                    TurbolinkSdk.loadDelayRedirectUrl();
                  },
                  child: Text("打开延迟活动"),
                ),
                TextButton(
                  onPressed: () {
                    _showDialog();
                  },
                  child: Text("打开弹窗"),
                ),
                TextButton(
                  onPressed: () {
                    this.isDark = !this.isDark;
                    TurbolinkSdk.setNightMode(this.isDark);
                  },
                  child: Text("黑夜/白天模式"),
                ),
                TextButton(
                  onPressed: () {
                    _share();
                  }, child: Text("分享,Share"),
                ),
                TextButton(onPressed: () {
                  TurbolinkSdk.showToast("Hi, TurboLink.");
                }, child: Text("Show Toast"),

                ),
                TextButton(onPressed: () {
                  TurbolinkSdk.switchEnv();
                }, child: Text("Switch Env"),

                ),
                TextButton(onPressed: () {
                  this.isFullscreen = !this.isFullscreen;
                  TurbolinkSdk.setFullScreenMode(this.isFullscreen);
                }, child: Text("Toggle fullscreen"),

                ),
                TextButton(onPressed: () {
                  TurboLinkDeepLinkProperties properties = new TurboLinkDeepLinkProperties();
                  properties.setTitle("jeff create").setTemplateId("cFTG").setTags(["vip1", "vip2"])
                  .setUserId("jeffabcd").setLinkData({"key1" : "value1", "key2" : "value2"})
                  .setAndroidRedirection(true, "https://www.turbolink.ai?reandroid")
                  .setIOSRedirection(false, "https://www.turbolink.ai?reios")
                  .setWebRedirection(false, "https://www.turbolink.ai?pc", "https://www.turbolink.ai?h5")
                  .setDefaultRedirection("https://www.turbolink.ai?default")
                  .setShare("fb share", "fb share desc", "https://inews.gtimg.com/news_ls/OWh5uR_-K8OaWQ-d_C_5S-5YYLcoXlfxQ3z6AnCMSQEJEAA_870492/0");
                  TurbolinkSdk.createDeepLink(properties, (data) {
                    print("callback:${data.shortHash}, ${data.linkUrl}, ${data.linkTemplate}");
                  });
                }, child: Text("Create DeepLink"),

                ),
                // Image.asset('images/dog.gif', width: 100,)
              ],
            )
        ),
      )
    );
  }
}
3
likes
140
points
275
downloads

Publisher

unverified uploader

Weekly Downloads

TurboLink's official Flutter SDK for App Attribution & Campaign.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_turbolink_attribution

Packages that implement flutter_turbolink_attribution