Flatter Firebase消息停用可见通知
如何停用Firebase消息中的可见通知,并使用Flatter_local_notifications包手动处理通知,使通知不会显示两次?我无法编辑服务器集成端,因为我正在使用wordpress插件()为我发送通知请求 有效载荷如下所示:Flatter Firebase消息停用可见通知,firebase,flutter,firebase-cloud-messaging,Firebase,Flutter,Firebase Cloud Messaging,如何停用Firebase消息中的可见通知,并使用Flatter_local_notifications包手动处理通知,使通知不会显示两次?我无法编辑服务器集成端,因为我正在使用wordpress插件()为我发送通知请求 有效载荷如下所示: String selectedNotificationPayload=“”; 最终颤振局部通知图京颤振局部通知图京= flatterLocalNotificationsPlugin(); 最终行为主体选择通知主体= 行为主体(); FirebaseMessag
String selectedNotificationPayload=“”;
最终颤振局部通知图京颤振局部通知图京=
flatterLocalNotificationsPlugin();
最终行为主体选择通知主体=
行为主体();
FirebaseMessaging;
Future main()异步{
WidgetsFlutterBinding.ensureInitialized();
flatterLocalNotificationsPlugin flatterLocalNotificationsPlugin=
flatterLocalNotificationsPlugin();
常量AndroidInitializationSettings initializationSettingsAndroid=
AndroidInitializationSettings(“共享图标”);
最终IOS初始化设置初始化设置SIOS=
IOS初始化设置(
请求权限:false,
请求权限:false,
requestAlertPermission:false,
onDidReceiveLocalNotification:
(int-id、字符串标题、字符串正文、字符串有效负载)异步{});
最终初始化设置初始化设置=初始化设置(
android:initializationSettingsAndroid,
iOS:初始化设置SIOS,
);
通知ApplaunchDetails通知ApplaunchDetails=
等待LocalNotificationsPlugin.getNotificationAppLaunchDetails();
if(notificationAppLaunchDetails?.didNotificationLaunchApp??false){
selectedNotificationPayload=notificationAppLaunchDetails.payload;
}
等待LocalNotificationsPlugin.initialize(初始化设置,
onSelectNotification:(字符串负载)异步{
如果(有效负载!=null){
selectedNotificationPayload=有效载荷;
选择NotificationSubject.add(有效载荷);
}
});
FirebaseMessagingBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(Start());
}
类开始扩展StatefulWidget{
@凌驾
_StartState createState()=>_StartState();
}
类_StartState扩展状态{
void initializeFlutterFire()异步{
试一试{
等待Firebase.initializeApp();
打印(“Firebase-已成功初始化”);
}捕获(e){
打印(“Firebase-初始化失败”);
}
messaging=firebasemsaging.instance;
}
void\u配置SelectNotificationSubject()异步{
选择NotificationSubject.stream.listen((字符串url)异步{
试一试{
等待未来。延迟(持续时间(毫秒:500),()异步{
wait Navigator.of(context.push)(新路由(_url,“”));
});
}捕获(e){
印刷品(“Fehler beimöffnen der网站”);
}
});
}
@凌驾
initState(){
super.initState();
初始化fLutterFire();
}
...
}
Future\u firebaseMessagingBackgroundHandler(RemoteMessage)异步{
等待Firebase.initializeApp();
地图数据=message.data;
字符串_title=数据['title'];
字符串_description=数据['message'];
发送通知(标题、说明);
}
send only data payload我无法更改发送到设备的内容,是否有方法在应用程序中执行此操作?
String selectedNotificationPayload = "";
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
final BehaviorSubject<String> selectNotificationSubject =
BehaviorSubject<String>();
FirebaseMessaging messaging;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('share_icon');
final IOSInitializationSettings initializationSettingsIOS =
IOSInitializationSettings(
requestSoundPermission: false,
requestBadgePermission: false,
requestAlertPermission: false,
onDidReceiveLocalNotification:
(int id, String title, String body, String payload) async {});
final InitializationSettings initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsIOS,
);
NotificationAppLaunchDetails notificationAppLaunchDetails =
await flutterLocalNotificationsPlugin.getNotificationAppLaunchDetails();
if (notificationAppLaunchDetails?.didNotificationLaunchApp ?? false) {
selectedNotificationPayload = notificationAppLaunchDetails.payload;
}
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: (String payload) async {
if (payload != null) {
selectedNotificationPayload = payload;
selectNotificationSubject.add(payload);
}
});
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(Start());
}
class Start extends StatefulWidget {
@override
_StartState createState() => _StartState();
}
class _StartState extends State<Start>{
void initializeFlutterFire() async {
try {
await Firebase.initializeApp();
print("Firebase - initialzed successfully");
} catch (e) {
print("Firebase - initialzed FAILED");
}
messaging = FirebaseMessaging.instance;
}
void _configureSelectNotificationSubject() async {
selectNotificationSubject.stream.listen((String _url) async {
try {
await Future.delayed(Duration(milliseconds: 500), () async {
await Navigator.of(context).push(new Route(_url, ""));
});
} catch (e) {
print("Fehler beim öffnen der Website");
}
});
}
@override
initState() {
super.initState();
initializeFlutterFire();
}
...
}
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
Map<String, dynamic> data = message.data;
String _title = data['title'];
String _description = data['message'];
sendNotification(_title, _description);
}