Flutter Android推送通知插件appmetrica_push_android的使用

Flutter Android推送通知插件appmetrica_push_android的使用

阅读俄文版本

《AppMetrica Push》SDK是一组用于处理推送通知的库。启用《AppMetrica Push》SDK后,您可以创建和配置推送通知活动,然后在《AppMetrica》网页界面中监控统计信息。

SDK文档

SDK功能

  • 接收和显示推送通知
  • 接收静默推送通知
  • 处理通知中的有效负载
  • 在通知中显示图像
  • 支持打开通知时的深层链接操作
  • 支持打开通知时的URL操作

设置

在项目的pubspec.yaml文件中添加以下内容:

dependencies:
  firebase_core: <latest_version>
  firebase_analytics: <latest_version>
  appmetrica_plugin: <latest_version>
  appmetrica_push_android: <latest_version>

开始使用SDK所需步骤

  • 在《AppMetrica》中创建一个项目
  • 在《Firebase》中创建一个项目,添加Android应用程序并加载google-services.json配置文件
  • 在《AppMetrica》项目设置中获取API key (for use in the SDK)
  • 在《Firebase控制台》项目设置中从Cloud Messaging API (Legacy)获取Server key
  • 配置《AppMetrica》以与FCM配合使用

(可选)启用推送令牌更新: FCM服务可能会撤回设备的推送令牌,例如用户长时间未启动应用程序。《AppMetrica》在服务器上存储推送令牌,并且不能向具有过期令牌的设备发送推送通知。要自动收集当前推送令牌,请转到《AppMetrica》界面中的应用设置,在推送通知标签页中启用通过静默推送通知更新令牌的选项。

连接《AppMetrica Push》SDK(示例可在examples/example_fcm中找到)

在文件<project>/android/app/build.gradle中添加minSdkVersion 19

使用Google服务插件

将配置文件google-services.json放置在项目的模块目录中。 在文件中添加:

buildscript {
  dependencies {
    ...
    classpath 'com.google.gms:google-services:4.3.13'
  }
}

在文件中添加:

...
apply plugin: 'com.google.gms.google-services'

不使用插件

修改AndroidManifest.xml文件中的application元素:

<meta-data android:name="ymp_firebase_default_app_id" android:value="APP_ID"/>
<meta-data android:name="ymp_gcm_default_sender_id" android:value="number:SENDER_ID"/>
<meta-data android:name="ymp_firebase_default_api_key" android:value="API_KEY"/>
<meta-data android:name="ymp_firebase_default_project_id" android:value="PROJECT_ID"/>
  • APP_ID — Firebase中的应用ID。可以在Firebase控制台中找到它:转到项目设置。在您的应用程序部分复制应用ID字段的值。
  • SENDER_ID — Firebase中的发送者唯一ID。可以在Firebase控制台中找到它:转到项目设置→云消息传递并复制发送者ID字段的值。
  • API_KEY — Firebase中的应用密钥。可以在google-services.json文件的current_key字段中找到它。可以在Firebase控制台中下载该文件。
  • PROJECT_ID — Firebase中的应用ID。可以在google-services.json文件的project_id字段中找到它。可以在Firebase控制台中下载该文件。

初始化《AppMetrica Push》SDK(示例可在examples/example_fcm中找到)

await Firebase.initializeApp();
await FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(true);

// 在激活AppmetricaPush之前必须调用AppMetrica.activate
await AppMetrica.activate(AppMetricaConfig('<AppMetrica API key>'));
await AppmetricaPushAndroid.instance.activate();
await AppmetricaPushAndroid.instance.requestPermission(PermissionOptions(
    alert: true,
    badge: true,
    sound: true,
  ));

使用《AppMetrica Push》SDK(示例可在examples/example_fcm中找到)

// 获取PUSH服务令牌
await AppmetricaPushAndroid.instance.getTokens();

// 流式推送服务令牌。当设备上的令牌更改时会收到此流
// 注意这是一个流广播
AppmetricaPushAndroid.instance.tokenStream.listen((Map<String, String?> data) => print('token: $data'));

// 流式静默推送,因为数据包含有效负载
// 注意这是一个流广播
AppmetricaPushAndroid.instance.onMessage
      .listen((String data) => print('onMessage: $data'));

// 流式推送,因为数据包含有效负载
// 注意这是一个流广播
AppmetricaPushAndroid.instance.onMessageOpenedApp
      .listen((String data) => print('onMessageOpenedApp: $data'));

示例演示

《AppMetrica Push》SDK的工作示例可在这里查看。


更多关于Flutter Android推送通知插件appmetrica_push_android的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Android推送通知插件appmetrica_push_android的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用appmetrica_push_android插件来实现Android推送通知的示例代码。

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

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

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

接下来,你需要配置Android项目以接收推送通知。以下是一些关键步骤和代码示例:

  1. 配置AndroidManifest.xml

确保你的AndroidManifest.xml文件中包含必要的权限和服务声明。appmetrica_push_android插件通常会处理大部分配置,但你可能需要添加或验证以下内容:

<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 Push服务 -->
        <service
            android:name="com.yandex.metrica.push.YandexPushService"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="com.example.yourapp" />
            </intent-filter>
        </service>

        <receiver
            android:name="com.yandex.metrica.push.YandexPushReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="com.example.yourapp" />
            </intent-filter>
        </receiver>

        <!-- 其他配置 -->

    </application>

</manifest>
  1. 初始化AppMetrica Push

在你的Flutter应用中初始化appmetrica_push_android插件。这通常在MainActivity.kt(或MainActivity.java)和Dart代码中完成。

MainActivity.kt

import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
import com.yandex.metrica.Metrica
import com.yandex.metrica.push.YandexPush

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        GeneratedPluginRegistrant.registerWith(flutterEngine)

        // 初始化AppMetrica
        Metrica.initialize(this, "YOUR_APP_METRICA_API_KEY")

        // 初始化AppMetrica Push
        YandexPush.initialize(this, object : YandexPush.InitializationListener {
            override fun onInitializationFinished(success: Boolean) {
                if (success) {
                    // 初始化成功
                } else {
                    // 初始化失败
                }
            }
        })
    }
}

Dart代码

在你的Dart代码中,你可以使用appmetrica_push_android插件来处理推送通知。

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

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

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

class PushNotificationSetup extends StatefulWidget {
  @override
  _PushNotificationSetupState createState() => _PushNotificationSetupState();
}

class _PushNotificationSetupState extends State<PushNotificationSetup> {
  @override
  void initState() {
    super.initState();

    // 监听推送通知
    AppMetricaPushAndroid.onMessageReceived.listen((message) {
      print("Received push notification: $message");

      // 在这里处理收到的推送通知
      // 例如,显示一个Snackbar或AlertDialog
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text("Push Notification: ${message['data']['message'] ?? 'No message'}"),
        ),
      );
    });

    // 请求推送通知权限(如果需要)
    AppMetricaPushAndroid.requestNotificationPermissions();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text('Waiting for push notifications...'),
      ],
    );
  }
}

注意:

  • 确保你替换了YOUR_APP_METRICA_API_KEY为你的实际AppMetrica API密钥。
  • 推送通知的接收和处理逻辑可能需要根据你的实际需求进行调整。
  • AppMetricaPushAndroid.onMessageReceived监听器将在应用处于前台时接收推送通知。如果需要在后台接收和处理推送通知,你可能需要配置更多的Android服务和广播接收器。

这个示例代码展示了如何在Flutter项目中集成和使用appmetrica_push_android插件来处理Android推送通知。希望这对你有所帮助!

回到顶部