Flutter集成第三方服务插件scatesdk_flutter的使用

Flutter集成第三方服务插件scatesdk_flutter的使用

ScateSDK Flutter插件

安装

通过命令行安装:

flutter pub add scatesdk_flutter

或者在pubspec.yaml文件中添加依赖项:

dependencies:
  scatesdk_flutter: ^0.4.9

Android集成

为了确保ScateSDK在Android上正常工作,你需要将Maven仓库添加到你的build.gradle文件中。

在项目的android/build.gradle文件中,添加以下Maven仓库:

repositories {
        // 其他仓库
        maven {
            url "https://europe-west1-maven.pkg.dev/mavenrepo-433814/scatecoresdk-android"
        }
    }

使用

初始化SDK

import 'package:scatesdk_flutter/scatesdk_flutter.dart';

class _MyAppState extends State<MyApp> {
  
  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,所以我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {

    // 调整SDK初始化
    // ...
    // 初始化ScateSDK
    ScateSDK.Init("<your app id>");
    // 确保设置Adjust SDK的adid
    String adid = await Adjust.adid();
    ScateSDK.SetAdid(adid);
  }
}

发送事件

ScateSDK.Event("button_clicked");

发送带有额外数据的事件

ScateSDK.EventWithValue("button_clicked", "subscribe_btn");

获取远程配置的值

String remoteConfigValue = await ScateSDK.GetRemoteConfig('key', 'defaultValue');

添加监听器

ScateSDK.AddListener(ScateEvents.REMOTE_CONFIG_READY, (event) => {});

移除监听器

ScateSDK.RemoveListener(ScateEvents.REMOTE_CONFIG_READY);

清理监听器

ScateSDK.CleanListeners(ScateEvents.REMOTE_CONFIG_READY);

登录事件函数

ScateSDK.LoginSuccess("apple");
ScateSDK.LoginSuccess("email");
ScateSDK.LoginSuccess("fb");
ScateSDK.LoginSuccess("google");

广告事件函数

ScateSDK.InterstitialAdShown();
ScateSDK.InterstitialAdClosed();
ScateSDK.RewardedAdShown();
ScateSDK.RewardedAdClosed();
ScateSDK.RewardedAdClaimed();
ScateSDK.BannerAdShown();

权限事件函数

ScateSDK.NotificationPermissionGranted();
ScateSDK.NotificationPermissionDenied();
ScateSDK.LocationPermissionGranted();
ScateSDK.LocationPermissionDenied();
ScateSDK.ATTPromptShown();
ScateSDK.ATTPermissionGranted();
ScateSDK.ATTPermissionDenied();

支付墙事件函数

ScateSDK.PaywallShown("paywall_name");
ScateSDK.PaywallClosed("paywall_name");
ScateSDK.PaywallAttempted("paywall_name");
ScateSDK.PaywallPurchased("paywall_name");
ScateSDK.PaywallCancelled("paywall_name");

Tab和功能事件函数

ScateSDK.TabClicked("x");
ScateSDK.FeatureClicked("x");

每日连击事件函数

ScateSDK.DailyStreakShown();
ScateSDK.DailyStreakClaimed();
ScateSDK.DailyStreakClosed();

示例代码

以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:scatesdk_flutter/scatesdk_flutter.dart';

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _remoteConfigValue = 'Loading...';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,所以我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {
    ScateSDK.Init("uw2YK");
    ScateSDK.SetAdid("test_adid");
    ScateSDK.Event("test_event");
    ScateSDK.EventWithValue("test_event", "test_value");

    ScateSDK.OnboardingStart();
    ScateSDK.OnboardingStep("location_screen");
    ScateSDK.OnboardingStep("notification_screen");
    ScateSDK.OnboardingStep("personalization_screen");
    ScateSDK.OnboardingStep("journey_screen");
    ScateSDK.OnboardingStep("intro_paywall_screen");
    ScateSDK.OnboardingStep("fullscreen_ad");
    ScateSDK.OnboardingFinish();

    ScateSDK.LoginSuccess("apple");
    ScateSDK.LoginSuccess("email");
    ScateSDK.LoginSuccess("fb");
    ScateSDK.LoginSuccess("google");

    ScateSDK.InterstitialAdShown();
    ScateSDK.InterstitialAdClosed();
    ScateSDK.RewardedAdShown();
    ScateSDK.RewardedAdClosed();
    ScateSDK.RewardedAdClaimed();
    ScateSDK.BannerAdShown();

    ScateSDK.NotificationPermissionGranted();
    ScateSDK.NotificationPermissionDenied();
    ScateSDK.LocationPermissionGranted();
    ScateSDK.LocationPermissionDenied();
    ScateSDK.ATTPromptShown();
    ScateSDK.ATTPermissionGranted();
    ScateSDK.ATTPermissionDenied();

    ScateSDK.PaywallShown("paywall_name");
    ScateSDK.PaywallClosed("paywall_name");
    ScateSDK.PaywallAttempted("paywall_name");
    ScateSDK.PaywallPurchased("paywall_name");
    ScateSDK.PaywallCancelled("paywall_name");

    ScateSDK.TabClicked("x");
    ScateSDK.TabClicked("y");

    ScateSDK.FeatureClicked("x");
    ScateSDK.FeatureClicked("y");

    ScateSDK.DailyStreakShown();
    ScateSDK.DailyStreakClaimed();
    ScateSDK.DailyStreakClosed();

    var localConfig = await ScateSDK.GetRemoteConfig('test', 'default');
    setState(() {
      _remoteConfigValue = 'Local -> ' + (localConfig ?? 'not found');
    });

    ScateSDK.AddListener(ScateEvents.REMOTE_CONFIG_READY, (success) async {
      print('Remote Fetched: $success');
      var remoteConfig = await ScateSDK.GetRemoteConfig('test', 'default');

      setState(() {
        _remoteConfigValue = 'Remote -> ' +
            (remoteConfig ?? 'not found') +
            '\n success -> ' +
            success.toString(); // 将布尔值转换为字符串
      });
    });

    //ScateSDK.RemoveListener(ScateEvents.REMOTE_CONFIG_READY);
    //ScateSDK.ClearListeners(ScateEvents.REMOTE_CONFIG_READY);

    // 如果在异步平台消息还在飞行时小部件从树中移除,则我们希望丢弃回复而不是调用
    // setState来更新我们的不存在的外观。
    if (!mounted) return;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('ScateSDK示例应用'),
        ),
        body: Center(
          child: Text(_remoteConfigValue + '\n'),
        ),
      ),
    );
  }
}

更多关于Flutter集成第三方服务插件scatesdk_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成第三方服务插件scatesdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成并使用第三方服务插件 scatesdk_flutter 的代码案例。请确保你已经有一个Flutter开发环境,并且已经创建了一个Flutter项目。

第一步:添加依赖

首先,你需要在你的 pubspec.yaml 文件中添加 scatesdk_flutter 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  scatesdk_flutter: ^最新版本号  # 请替换为实际的最新版本号

然后运行 flutter pub get 来获取依赖。

第二步:导入插件

在你的 Dart 文件中导入该插件。例如,在 main.dart 文件中:

import 'package:flutter/material.dart';
import 'package:scatesdk_flutter/scatesdk_flutter.dart';

第三步:初始化插件

通常,第三方插件需要在应用启动时进行初始化。你可以在 main.dartMyApp 类中完成初始化。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 在这里进行插件的初始化,例如配置API密钥等
    ScateSdk.instance.init('你的API密钥');

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

第四步:使用插件功能

现在,你可以在你的应用中使用 scatesdk_flutter 插件提供的功能。以下是一个简单的例子,假设插件有一个方法 fetchData 可以用来获取数据。

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

class _MyHomePageState extends State<MyHomePage> {
  List<String> data = [];

  @override
  void initState() {
    super.initState();
    _fetchData();
  }

  Future<void> _fetchData() async {
    try {
      // 假设插件有一个名为 fetchData 的方法
      var result = await ScateSdk.instance.fetchData();
      setState(() {
        data = result.map((item) => item.toString()).toList();
      });
    } catch (e) {
      print('Error fetching data: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Data:',
            ),
            Expanded(
              child: ListView.builder(
                itemCount: data.length,
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text(data[index]),
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. API密钥:请确保你使用的是实际的API密钥,并且这个密钥已经在第三方服务的后台进行了配置。
  2. 错误处理:在实际开发中,你应该添加更多的错误处理逻辑,以确保应用的健壮性。
  3. 插件文档:查阅 scatesdk_flutter 的官方文档,以了解所有可用的方法和属性。

这个代码案例提供了一个基本的框架,展示了如何在Flutter项目中集成并使用 scatesdk_flutter 插件。根据你的具体需求,你可能需要调整或扩展这个代码。

回到顶部