Flutter应用集成插件appcenter_flutter的使用

Flutter应用集成插件appcenter_flutter的使用

本插件目前集成了AppCenter分析和崩溃报告功能。

开始使用

要开始使用,请访问AppCenter并注册您的应用程序。

对于详细的AppCenter API文档,请访问AppCenter文档

构建

使用以下命令构建:

flutter build apk

android/app/build.gradle中添加以下部分:

android {
  ...
  // This is likely needed, see https://github.com/flutter/flutter/issues/58247
  lintOptions {
      disable 'InvalidPackage'
      checkReleaseBuilds false
  }
}

建议先尝试示例项目来解决本地构建问题。

使用方法

基本用法

import 'package:appcenter_flutter/appcenter.dart';

await AppCenter.startAsync(
    appSecretAndroid: '******',
    appSecretIOS: '******',
    enableAnalytics: true, // 默认为true
    enableCrashes: true, // 默认为true
  );
  
AppCenter.trackEventAsync('my event', <String, String> {
  'prop1': 'prop1',
  'prop2': 'prop2',
});

运行时启用或禁用功能

await AppCenter.configureAnalyticsAsync(enabled: true);

await AppCenter.configureCrashesAsync(enabled: true);

故障排除

iOS: [!] CocoaPods找不到兼容的版本

手动删除podfile.lock并重新构建,这是升级iOS原生依赖项时常见的问题。

Android构建问题

总是检查示例项目是否可以构建,如果不能构建,请报告问题。如果可以构建,请检查Gradle设置。

检查点包括:

  • gradle-wrapper.properties中的Gradle版本
  • build.gradle中的Kotlin版本
  • build.gradle中的compileSdkVersion
  • build.gradle中的com.android.tools.build:gradle版本
  • 示例中的lintOptions(见问题
  • 示例中的build.gradle脚本
  • 示例中的settings.gradle

jcenter退役

由于jcenter将在2021年5月1日退役,因此请将其替换为:

repositories {
     google()
     // jcenter()
     mavenCentral()
     gradlePluginPortal()
 }

示例代码

以下是完整的示例代码:

import 'package:flutter/material.dart';

import 'package:package_info/package_info.dart';
import 'package:appcenter_flutter/appcenter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AppCenter.startAsync(
    appSecretAndroid: '<APPCENTER-SECRET-ANDROID>',
    appSecretIOS: '<APPCENTER-SECRET-IOS>',
  );

  runApp(MyApp());
}

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件flutter应用'),
        ),
        body: Container(
          padding: EdgeInsets.all(20),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              const PackageInfoContent(),
              const SizedBox(height: 8.0),
              FutureBuilder(
                future: AppCenter.isCrashesEnabledAsync(),
                builder: (_, AsyncSnapshot<bool?> snapshot) {
                  if (snapshot.hasData) {
                    final isCrashesEnabled = snapshot.data!;

                    return Text('IsCrashesEnabled: $isCrashesEnabled');
                  }

                  return const CircularProgressIndicator.adaptive();
                },
              ),
              const SizedBox(height: 8.0),
              FutureBuilder(
                future: AppCenter.isAnalyticsEnabledAsync(),
                builder: (_, AsyncSnapshot<bool?> snapshot) {
                  if (snapshot.hasData) {
                    final isAnalyticsEnabled = snapshot.data!;

                    return Text('IsAnalyticsEnabled: $isAnalyticsEnabled');
                  }

                  return const CircularProgressIndicator.adaptive();
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

class PackageInfoContent extends StatelessWidget {
  const PackageInfoContent();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: PackageInfo.fromPlatform(),
      builder: (_, AsyncSnapshot<PackageInfo> snapshot) {
        if (snapshot.hasData) {
          final packageInfo = snapshot.data!;

          return Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text('App name:\n${packageInfo.appName}'),
              const SizedBox(height: 8.0),
              Text('Package name:\n${packageInfo.packageName}'),
              const SizedBox(height: 8.0),
              Text('Version:\n${packageInfo.version}'),
              const SizedBox(height: 8.0),
              Text('Build:\n${packageInfo.buildNumber}'),
            ],
          );
        }

        return const CircularProgressIndicator.adaptive();
      },
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter应用中集成和使用appcenter_flutter插件的示例代码案例。appcenter_flutter插件允许你将Microsoft App Center的功能集成到你的Flutter应用中,以便进行崩溃报告、分析、推送通知等。

步骤 1: 添加依赖

首先,你需要在你的pubspec.yaml文件中添加appcenter_flutter及其依赖项appcenter_analyticsappcenter_crashes(如果需要其他服务,如推送通知,还需添加相应的插件)。

dependencies:
  flutter:
    sdk: flutter
  appcenter_flutter: ^x.y.z  # 请替换为最新版本号
  appcenter_analytics: ^x.y.z  # 请替换为最新版本号
  appcenter_crashes: ^x.y.z  # 请替换为最新版本号

运行flutter pub get来安装这些依赖。

步骤 2: 配置App Center

在你的main.dart文件中,或者在应用的初始化代码中,配置App Center。

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

void main() {
  // 配置App Center
  configureAppCenter();
  runApp(MyApp());
}

void configureAppCenter() {
  // 替换为你的App Center应用密钥
  final String appSecret = 'your-app-secret-here';

  // 初始化App Center
  AppCenter.start(
    appSecret: appSecret,
    services: [
      Analytics.configure(),
      Crashes.configure(),
    ],
  );
}

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter App Center Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Press the button to track an event'),
            ElevatedButton(
              onPressed: () {
                // 发送自定义事件到Analytics
                Analytics.trackEvent(
                  name: 'button_pressed',
                  properties: <String, dynamic>{
                    'category': 'user_interaction',
                  },
                );
              },
              child: Text('Track Event'),
            ),
          ],
        ),
      ),
    );
  }
}

步骤 3: 测试崩溃报告

为了测试崩溃报告功能,你可以在代码中故意引入一个错误。例如,在按钮点击事件中抛出一个异常。

ElevatedButton(
  onPressed: () {
    // 发送自定义事件到Analytics
    Analytics.trackEvent(
      name: 'button_pressed',
      properties: <String, dynamic>{
        'category': 'user_interaction',
      },
    );

    // 模拟崩溃
    testCrash();
  },
  child: Text('Track Event and Crash'),
),

void testCrash() {
  throw UnimplementedError('This is a simulated crash');
}

注意事项

  1. App Secret:确保你使用的是正确的App Secret,这个密钥可以从App Center门户获取。
  2. 错误处理:在实际应用中,你可能需要更细致地处理错误,而不是简单地抛出未实现的异常。
  3. 隐私和安全:在收集和分析用户数据时,确保遵守相关的隐私法规和标准。

通过上述步骤,你已经成功地在Flutter应用中集成了appcenter_flutter插件,并配置了基本的分析和崩溃报告功能。根据需要,你还可以进一步集成推送通知等其他服务。

回到顶部