Flutter游戏数据分析插件gameanalytics_sdk的使用

Flutter游戏数据分析插件gameanalytics_sdk的使用

GA-SDK-FLUTTER

GameAnalytics SDK for Flutter。

文档位于 此处

如果您在SDK使用过程中遇到任何问题或有反馈,请联系我们的客服团队 此处

ℹ️

Flutter SDK 支持 iOSAndroidWeb 平台。

示例代码

以下是使用 gameanalytics_sdk 插件的一个完整示例:

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

import 'package:flutter/services.dart';
import 'package:gameanalytics_sdk/gameanalytics.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

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

    // 启用信息日志和详细日志
    GameAnalytics.setEnabledInfoLog(true);
    GameAnalytics.setEnabledVerboseLog(true);

    // 配置可用的自定义维度
    GameAnalytics.configureAvailableCustomDimensions01(["ninja", "samurai"]);
    GameAnalytics.configureAvailableCustomDimensions02(["whale", "dolphin"]);
    GameAnalytics.configureAvailableCustomDimensions03(["horde", "alliance"]);

    // 配置可用资源货币和资源类型
    GameAnalytics.configureAvailableResourceCurrencies(["gems", "gold"]);
    GameAnalytics.configureAvailableResourceItemTypes(["boost", "lives"]);

    // 配置构建版本
    GameAnalytics.configureBuild("0.1.0");
    GameAnalytics.configureAutoDetectAppVersion(true);

    // 初始化 SDK
    GameAnalytics.initialize(
        "c6cfc80ff69d1e7316bf1e0c8194eda6",
        "e0ae4809f70e2fa96916c7060f417ae53895f18d"
    );

    // 设置自定义维度
    GameAnalytics.setCustomDimension01("ninja");
    GameAnalytics.setCustomDimension02("dolphin");
    GameAnalytics.setCustomDimension03("alliance");

    // 添加商业事件
    GameAnalytics.addBusinessEvent({
      "currency": "USD",
      "amount": 99,
      "itemType": "weapons",
      "itemId": "shotgun",
      "cartType": "end_of_level"
    });

    GameAnalytics.addBusinessEvent({
      "currency": "USD",
      "amount": 99,
      "itemType": "weapons",
      "itemId": "shotgun",
      "cartType": "end_of_level",
      "receipt": "test_receipt",
      "signature": "test_signature"
    });

    // 添加资源事件
    GameAnalytics.addResourceEvent({
      "flowType": GAResourceFlowType.Source,
      "currency": "gems",
      "amount": 100,
      "itemType": "lives",
      "itemId": "5lives"
    });

    // 添加进度事件
    GameAnalytics.addProgressionEvent({
      "progressionStatus": GAProgressionStatus.Start,
      "progression01": "world01",
      "progression02": "level01",
      "progression03": "phase01",
      "itemId": "5lives"
    });

    GameAnalytics.addProgressionEvent({
      "progressionStatus": GAProgressionStatus.Complete,
      "progression01": "world01",
      "progression02": "level01",
      "progression03": "phase01",
      "score": 666
    });

    // 添加设计事件
    GameAnalytics.addDesignEvent({"eventId": "some:event"});
    GameAnalytics.addDesignEvent({"eventId": "some:other:event", "value": 666});

    // 添加错误事件
    GameAnalytics.addErrorEvent({
      "severity": GAErrorSeverity.Error,
      "message": "This is an error message!!!"
    });

    // 添加广告事件
    GameAnalytics.addAdEvent({
      "adAction": GAAdAction.Show,
      "adType": GAAdType.Interstitial,
      "adSdkName": "mopub",
      "adPlacement": "end_of_level"
    });
  }

  Future<void> printRemoteConfigsInfo() async {
    // 获取远程配置内容
    String content = await GameAnalytics.getRemoteConfigsContentAsString() ?? "";
    print("content=" + content);

    // 检查远程配置是否已准备好
    bool isReady = await GameAnalytics.isRemoteConfigsReady();
    print("isReady=" + isReady.toString());

    // 获取远程配置值
    String value = await GameAnalytics.getRemoteConfigsValueAsString(
            "unicode_key", "null") ??
        "null";
    print("value=" + value);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: TextButton(
              child: Text('测试'),
              onPressed: () {
                printRemoteConfigsInfo();
              }),
        ),
      ),
    );
  }
}

更多关于Flutter游戏数据分析插件gameanalytics_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,以下是如何在Flutter项目中使用gameanalytics_sdk插件来进行游戏数据分析的示例代码。这个插件允许你集成GameAnalytics的服务,以收集和分析游戏玩家的行为数据。

首先,确保你已经在pubspec.yaml文件中添加了gameanalytics_sdk依赖:

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

然后,运行flutter pub get来安装依赖。

接下来,你需要配置GameAnalytics的初始化参数。这通常包括你的游戏密钥和密钥集。以下是一个完整的示例,展示如何在Flutter应用中初始化和使用gameanalytics_sdk

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化GameAnalytics SDK
  GameAnalytics.initialize(
    gameKey: '你的游戏密钥',  // 替换为你的GameAnalytics游戏密钥
    secretKey: '你的密钥集',  // 替换为你的GameAnalytics密钥集
  )
    ..then((_) {
      runApp(MyApp());
    })
    ..catchError((error) {
      print('GameAnalytics initialization failed: $error');
      // 处理初始化失败的情况
      runApp(MyApp()); // 或者显示错误页面
    });
}

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

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

class _MyHomePageState extends State<MyHomePage> {
  void _startSession() {
    // 开始一个新的会话(通常不需要手动调用,SDK会自动管理会话)
    GameAnalytics.newSession();
  }

  void _businessEvent() {
    // 发送一个商业事件,例如购买
    GameAnalytics.addEvent(
      eventKey: 'purchase',
      currency: 'USD',
      amount: 9.99,
      itemType: 'in_app_purchase',
      itemId: 'sword_upgrade',
    );
  }

  void _progressEvent() {
    // 发送一个进度事件,例如关卡完成
    GameAnalytics.addEvent(
      eventKey: 'level_complete',
      progressionStatus: GameAnalyticsProgressionStatus.complete,
      level: 3, // 当前关卡
      score: 1500, // 当前得分
    );
  }

  void _designEvent() {
    // 发送一个设计事件,例如广告查看
    GameAnalytics.addEvent(
      eventKey: 'ad_viewed',
      adType: 'video',
      adPlacement: 'level_start',
    );
  }

  void _addErrorEvent() {
    // 发送一个错误事件
    GameAnalytics.addErrorEvent(
      errorMessage: 'Failed to load resources',
      severity: GameAnalyticsSeverity.error,
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Game Analytics Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _startSession,
              child: Text('Start Session'),
            ),
            ElevatedButton(
              onPressed: _businessEvent,
              child: Text('Business Event'),
            ),
            ElevatedButton(
              onPressed: _progressEvent,
              child: Text('Progress Event'),
            ),
            ElevatedButton(
              onPressed: _designEvent,
              child: Text('Design Event'),
            ),
            ElevatedButton(
              onPressed: _addErrorEvent,
              child: Text('Error Event'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们展示了如何初始化GameAnalytics SDK,并发送几种不同类型的事件:商业事件、进度事件、设计事件和错误事件。你可以根据你的游戏需求,添加更多的事件和自定义参数。

请确保你替换了你的游戏密钥你的密钥集为实际的GameAnalytics密钥。此外,根据你的具体需求,你可能需要调整事件参数和调用时机。

这个示例提供了一个基础框架,你可以在这个基础上进一步扩展和优化你的游戏数据分析功能。

回到顶部