Flutter应用中心集成插件appcenter_sdk_plus的使用

Flutter应用中心集成插件appcenter_sdk_plus的使用

appcenter_sdk_plus

pub package

appcenter_sdk_plus 是一个完全用 Flutter 编写的 AppCenter SDK,支持多个平台。它提供了 AppCenter Analytics 和 AppCenter Crashes 的一些操作。更多关于 AppCenter API 的详细信息可以在其 官方文档 中找到。

特性

该包提供了以下操作:

  • 向 AppCenter Analytics 发送日志事件
  • 向 AppCenter Crashes 发送崩溃报告
  • 跟踪屏幕视图

开始使用

要安装此插件,请运行以下命令:

flutter pub add appcenter_sdk_plus

对于 Flutter 应用程序,您还需要添加本地 SQLite 库:

flutter pub add sqlite3_flutter_libs

对于其他平台,请参阅 sqlite3 文档

使用示例

以下是使用 appcenter_sdk_plus 的完整示例代码:

import 'package:flutter/material.dart';
import 'package:appcenter_sdk_plus/appcenter_sdk_plus.dart';
import 'package:appcenter_sdk_plus/service/appcenter_analytics.dart';
import 'package:appcenter_sdk_plus/service/appcenter_crashes.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 启动 AppCenter
  await AppCenter.start("8e14e67c-7c91-40ac-8517-c62ece8424a6");

  // 跟踪一个事件
  await AppCenterAnalytics.trackEvent("app_started", properties: {"theme": "system"});

  // 模拟一个异常并跟踪错误
  try {
    throw Exception("something");
  } catch (e, s) {
    await AppCenterCrashes.trackError(e, s, properties: {"reason": "Test trackError"});
  }
}

完整示例代码

import 'package:appcenter_sdk_plus/appcenter_sdk_plus.dart';
import 'package:appcenter_sdk_plus/service/appcenter_analytics.dart';
import 'package:appcenter_sdk_plus/service/appcenter_analytics_observer.dart';
import 'package:appcenter_sdk_plus/service/appcenter_crashes.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:logging/logger.dart';
import 'package:logging_appenders/logging_appenders.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  PrintAppender.setupLogging(level: Level.FINE);

  await AppCenter.start("8e14e67c-7c91-40ac-8517-c62ece8424a6");

  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      navigatorObservers: [
        AppCenterAnalyticsObserver(),
      ],
      initialRoute: LoadingPage.route,
      routes: {
        LoadingPage.route: (context) => const LoadingPage(),
        HomePage.route: (context) => const HomePage(title: 'Flutter Demo Home Page'),
      },
    );
  }
}

class HomePage extends StatelessWidget {
  static const String route = "/home";

  const HomePage({Key? key, required this.title});

  final String title;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(16),
              child: ElevatedButton(
                onPressed: () async {
                  await AppCenterAnalytics.trackEvent("app_started", properties: {"theme": "system"});
                },
                child: const Text("提交事件日志"),
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(16),
              child: ElevatedButton(
                onPressed: () async {
                  try {
                    throw Exception("something");
                  } catch (e, s) {
                    await AppCenterCrashes.trackError(e, s);
                  }
                },
                child: const Text("提交崩溃日志"),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

class LoadingPage extends StatelessWidget {
  static const String route = "/";

  const LoadingPage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            FutureBuilder<void>(
                future: Future.delayed(const Duration(seconds: 3)),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.none || 
                      snapshot.connectionState == ConnectionState.waiting) {
                    return Row(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        SizedBox.fromSize(
                          size: const Size(16, 16),
                          child: const CircularProgressIndicator(),
                        ),
                      ],
                    );
                  }

                  SchedulerBinding.instance.addPostFrameCallback((_) {
                    Navigator.pushReplacementNamed(context, HomePage.route);
                  });
                  return Container();
                }),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


appcenter_sdk_plus 是一个用于在 Flutter 应用中集成 Microsoft App Center 的插件。App Center 提供了多种功能,包括崩溃报告、分析、分发和测试自动化。通过集成 appcenter_sdk_plus,你可以在 Flutter 应用中轻松使用这些功能。

以下是在 Flutter 应用中集成 appcenter_sdk_plus 的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  appcenter_sdk_plus: ^2.0.0  # 请使用最新版本

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

2. 初始化 App Center

在你的 Flutter 应用中,你需要初始化 App Center SDK。通常在 main.dart 文件中的 main() 函数中进行初始化。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化 App Center
  await AppCenter.start(
    appSecretAndroid: 'your-android-app-secret',
    appSecretIOS: 'your-ios-app-secret',
  );

  runApp(MyApp());
}

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('App Center Demo'),
      ),
      body: Center(
        child: Text('Hello, App Center!'),
      ),
    );
  }
}

注意:你需要将 your-android-app-secretyour-ios-app-secret 替换为你在 App Center 中创建的应用的实际密钥。

3. 使用 App Center 功能

appcenter_sdk_plus 提供了多种功能,包括崩溃报告、分析等。你可以在代码中调用相关方法来使用这些功能。

3.1 崩溃报告

要启用崩溃报告,你可以在初始化时设置 enableCrashes 参数为 true

await AppCenter.start(
  appSecretAndroid: 'your-android-app-secret',
  appSecretIOS: 'your-ios-app-secret',
  enableCrashes: true,
);

你还可以手动触发崩溃测试:

await AppCenterCrashes.generateTestCrash();

3.2 分析

要启用分析,你可以在初始化时设置 enableAnalytics 参数为 true

await AppCenter.start(
  appSecretAndroid: 'your-android-app-secret',
  appSecretIOS: 'your-ios-app-secret',
  enableAnalytics: true,
);

你可以记录自定义事件:

await AppCenterAnalytics.trackEvent('ButtonClicked', properties: {'Button': 'Login'});
回到顶部