Flutter本地推送通知插件native_push的使用
Flutter本地推送通知插件native_push的使用
插件介绍
Native Push Plugin 是一个Flutter插件,它提供了在不同平台上(包括Android、iOS、macOS和Web)无缝集成推送通知的功能。 这个插件允许您的Flutter应用程序轻松接收和处理远程通知。
特性
- 支持Firebase Cloud Messaging (FCM) for Android.
- 支持Apple Push Notification Service (APNs) for iOS and macOS.
- 支持Web Push for web applications.
- 处理应用在前台、后台或终止时收到的推送通知。
- 提供初始化插件、注册远程通知以及获取通知令牌的方法。
- 支持各种通知选项,如提示、徽章、声音等。
安装
在pubspec.yaml
文件中添加以下依赖项:
dependencies:
native_push: ^1 latest
然后运行flutter pub get
来安装插件。
使用示例
导入插件
import 'package:native_push/native_push.dart';
初始化插件
在main.dart
文件中初始化插件:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化native push插件
await NativePush.instance.initialize(
firebaseOptions: {
'apiKey': 'YOUR_API_KEY',
'projectId': 'YOUR_PROJECT_ID',
'messagingSenderId': 'YOUR_MESSAGING_SENDER_ID',
'applicationId': 'YOUR_APP_ID',
},
useDefaultNotificationChannel: true,
);
runApp(MyApp());
}
如果不需要使用FCM,请省略firebaseOptions
部分。可以使用extract_fcm_options
脚本来提取google-services.json
中的信息。
cat google-services.json | ./extract_fcm_options.sh <android-bundle-id>
注册远程通知
注册远程通知以获取通知令牌:
await NativePush.instance.registerForRemoteNotification(
options: [NotificationOption.alert, NotificationOption.sound],
vapidKey: 'YOUR_VAPID_KEY', // 对于web推送,可以省略否则
);
处理 incoming notifications
监听 incoming notifications 使用 notificationStream
:
NativePush.instance.notificationStream.listen((notification) {
// 处理通知
print('Received notification: $notification');
});
获取初始通知
处理打开应用的初始通知:
final initialNotification = await NativePush.instance.initialNotification();
if (initialNotification != null) {
// 处理初始通知
print('Initial notification: $initialNotification');
}
获取通知令牌
获取当前的通知令牌:
final (service, token) = await NativePush.instance.notificationToken;
print('Notification Service: $service, Token: $token');
平台特定配置
Android
确保为您的应用添加以下元数据:
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="native_push_notification_channel" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@android:drawable/ic_input_add" />
只有在initialize
中设置useDefaultNotificationChannel
为true时才能使用native_push_notification_channel
。 否则需要创建并指定自己的通知通道。
在主活动intent filter中添加以下内容:
<action android:name="com.opdehipt.native_push.PUSH"/>
iOS
您需要添加Push Notification
Capability。
如果您想支持通知中的图像,还需要添加Background Modes
Capability并勾选Remote Notifications
。 您还需要添加Notification Service Extension
到您的应用,并替换代码为以下内容:
import NativePushNotificationService
final class NotificationService: NativePushNotificationService {}
更多关于Flutter本地推送通知插件native_push的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html