Flutter Android推送通知插件appmetrica_push_android的使用
Flutter Android推送通知插件appmetrica_push_android的使用
《AppMetrica Push》SDK是一组用于处理推送通知的库。启用《AppMetrica Push》SDK后,您可以创建和配置推送通知活动,然后在《AppMetrica》网页界面中监控统计信息。
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
更多关于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项目以接收推送通知。以下是一些关键步骤和代码示例:
- 配置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>
- 初始化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推送通知。希望这对你有所帮助!