Flutter应用性能监控及推送功能插件appmetrica_push_plugin的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter应用性能监控及推送功能插件appmetrica_push_plugin的使用

AppMetrica Push SDK for Flutter

AppMetrica Push SDK for Flutter 是由 Yandex 提供的一个 Flutter 插件,允许你向复杂的用户群体发送推送通知,灵活地调整推送时间,并对活动进行 A/B 测试。推送通知的数量没有限制。

支持的功能

  • 灵活的目标定位:使用 AppMetrica 处理的所有用户数据来创建复杂的细分市场,实现个性化沟通。
  • A/B 测试:为同一受众尝试不同的推送内容组合,或测试不同用户群体的响应。
  • 丰富的推送编辑器:可以自定义推送通知的所有内容,包括文本、图片、图标和行动号召。
  • 调度:所有推送通知都可以根据收件人所在的时区安排在特定时间弹出。
  • 推送 API:使用自定义触发器(包括应用外事件)发送单个通知。
  • 详细统计:仔细评估推送活动的效果,跟踪每个推送如何影响用户行为,并将推送活动与关键指标匹配。

开始使用

在你的 Flutter 项目中添加以下依赖:

dependencies:
  ...
  appmetrica_push_plugin: ^2.0.0

激活 AppMetrica SDK for Flutter 使用 AppMetrica.activate 并提供你的 API Key

AppMetrica.activate(AppMetricaConfig("insert_your_api_key_here"));

激活 AppMetrica Push SDK 使用 AppMetricaPush.activate 并通过 AppMetricaPush.tokenStream 订阅令牌

AppMetricaPush.activate();
AppMetricaPush.tokenStream.listen((tokens) {
  // 处理新令牌
});

完成所有目标平台的推送传输集成,具体步骤请参考其文档。

建议改进

如果你发现 bug、有功能请求或其他改进建议,请使用 反馈表单

注意事项

  • 激活 AppMetrica SDK for Flutter 是 AppMetrica Push SDK for Flutter 正常工作的必要条件。
  • 该插件使用 Pigeon 生成 Flutter 和主机平台之间的通信接口。

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 appmetrica_push_plugin

import 'package:flutter/material.dart';
import 'package:appmetrica_push_plugin/appmetrica_push_plugin.dart';
import 'package:appmetrica_plugin/appmetrica_plugin.dart';

AppMetricaConfig get _config => const AppMetricaConfig('Your api key', logs: true);

Future<void> main() async {
  AppMetrica.runZoneGuarded(() {
    WidgetsFlutterBinding.ensureInitialized();
    AppMetrica.activate(_config);
    AppMetricaPush.activate();
    runApp(const MyApp());
  });
}

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

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

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('AppMetrica Push plugin example app'),
        ),
        body: Builder(
          builder: (BuildContext context) => Padding(
            padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 5),
            child: ListView(
              children: <Widget>[
                ElevatedButton(
                  onPressed: () {
                    AppMetricaPush.requestPermission(
                        alert: true, badge: true, sound: true);
                  },
                  child: const Text('Request permissions'),
                ),
                ElevatedButton(
                  onPressed: () {
                    AppMetricaPush.tokenStream.listen((tokens) {
                      _showSnackBar(context, 'Tokens update: $tokens');
                    });
                  },
                  child: const Text('Start token listening'),
                ),
                ElevatedButton(
                  onPressed: () async {
                    final tokens = await AppMetricaPush.getTokens();
                    _showSnackBar(context, 'Tokens: $tokens');
                  },
                  child: const Text('Request tokens'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

  void _showSnackBar(BuildContext context, String content) {
    final scaffold = ScaffoldMessenger.of(context);
    scaffold.hideCurrentSnackBar();
    scaffold.showSnackBar(
      SnackBar(
        content: Text(content),
        duration: const Duration(seconds: 5),
      ),
    );
  }
}

说明

  1. 初始化:在 main 函数中,使用 AppMetrica.runZoneGuarded 包装整个应用的运行,确保 AppMetrica 在应用启动时被激活。
  2. 权限请求:使用 AppMetricaPush.requestPermission 请求推送通知权限。
  3. 令牌监听:使用 AppMetricaPush.tokenStream 监听令牌更新。
  4. 获取令牌:使用 AppMetricaPush.getTokens 获取当前的推送令牌。

通过以上步骤,你可以在 Flutter 应用中集成 AppMetrica Push SDK,实现推送通知的发送和管理。


更多关于Flutter应用性能监控及推送功能插件appmetrica_push_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用性能监控及推送功能插件appmetrica_push_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter应用中集成性能监控和推送功能,你可以使用appmetrica_push_plugin插件。这个插件通常用于集成Yandex AppMetrica的服务,它提供了应用性能监控和推送通知的功能。以下是如何在Flutter项目中配置和使用这个插件的示例代码。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加appmetrica_push_plugin依赖:

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

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

2. 配置Android

android/app/src/main/AndroidManifest.xml文件中,添加必要的权限和配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <!-- 其他配置 -->

    <!-- 添加接收推送通知的权限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="com.google.android.c2dm.PERMISSION.RECEIVE"/>

    <application
        <!-- 其他配置 -->

        <!-- 配置AppMetrica服务 -->
        <meta-data
            android:name="com.yandex.mobile.apps.YandexMetrica"
            android:value="你的AppMetrica API Key"/>

        <!-- 配置推送接收器 -->
        <receiver android:name="com.yandex.mobile.push.YandexPushReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.PERMISSION.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
                <category android:name="com.example.yourapp"/>
            </intent-filter>
        </receiver>

        <!-- 配置启动Activity -->
        <activity android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
                <category android:name="com.example.yourapp"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

确保将你的AppMetrica API Key替换为你的实际API密钥,并将com.example.yourapp替换为你的应用包名。

3. 配置iOS

对于iOS,你需要在ios/Runner/Info.plist文件中添加必要的配置。然而,appmetrica_push_plugin主要支持Android推送,iOS推送可能需要额外的配置和代码,这通常涉及到Firebase或其他iOS推送服务。

4. 初始化并使用插件

在你的Flutter代码中,初始化并使用appmetrica_push_plugin

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AppMetrica Push Plugin Demo'),
        ),
        body: Center(
          child: MyHomePage(),
        ),
      ),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    _initAppMetricaPush();
  }

  Future<void> _initAppMetricaPush() async {
    // 初始化AppMetrica Push
    AppMetricaPushPlugin appMetricaPush = AppMetricaPushPlugin();

    // 注册推送通知回调
    appMetricaPush.onMessageReceived.listen((Map<String, dynamic> message) {
      print('Received push message: $message');
      // 在这里处理接收到的推送消息
    });

    // 注册设备令牌回调(通常用于服务器端发送推送)
    appMetricaPush.onTokenRefresh.listen((String token) {
      print('Device token refreshed: $token');
      // 在这里将新令牌发送到你的服务器
    });

    // 请求推送权限(Android)
    await appMetricaPush.requestNotificationPermissions();
  }

  @override
  Widget build(BuildContext context) {
    return Text('Check console for push notifications logs.');
  }
}

这段代码演示了如何初始化appmetrica_push_plugin,并注册消息接收和设备令牌刷新的回调。请注意,iOS推送配置可能需要额外的步骤,这超出了本示例的范围。

确保你已经正确配置了Yandex AppMetrica服务,并且你的应用有权限接收推送通知。这个示例代码提供了基本的集成和回调处理,你可以根据需要进行扩展和自定义。

回到顶部