如何在没有firebase的情况下显示推送通知?
Posted
技术标签:
【中文标题】如何在没有firebase的情况下显示推送通知?【英文标题】:How to show push notification in flutter without firebase? 【发布时间】:2020-05-23 07:06:35 【问题描述】:在我的颤振应用程序中,我必须在没有 firebase 的情况下显示推送通知。在点击特定 API 后,我的服务器会向我发送一条消息,并且我想将该消息显示为推送通知。
你能告诉我如何在颤振中做到这一点吗?
【问题讨论】:
推送通知需要在带有 APN 的 android 和 ios 上使用 FCM。如果您只想显示本地通知,那就不同了。推送通知主要用于在应用关闭时接收数据。 那我怎样才能显示本地通知呢?现在你能告诉我如何简单地显示推送通知,如果我从服务器收到任何消息,或者如果我按下屏幕上的任何按钮,它会显示推送通知。 查看 Navin 的回复:***.com/a/60110301/3743245 【参考方案1】:您可以使用本地通知插件
https://pub.dev/packages/flutter_local_notifications
在您的 API 响应后,只需在本地通知中显示该数据
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); // initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
var initializationSettingsAndroid =
new AndroidInitializationSettings('app_icon');
var initializationSettingsIOS = IOSInitializationSettings(
onDidReceiveLocalNotification: onDidReceiveLocalNotification);
var initializationSettings = InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
【讨论】:
即使在应用未聚焦或其他应用在屏幕上实时运行时,此功能也能正常工作吗? 不,它没有。 当我的应用在后台运行良好时,我使用 flutter_local_notifications 进行约会提醒。 您如何获得应用 ID? 这在 Android 上不起作用,因为后台的应用程序会在一段时间后进入 IDLE 状态。检查前台通知以维护应用程序【参考方案2】:它与最新的颤振版本(空安全)不兼容
【讨论】:
【参考方案3】:有两种主要方法可以在没有 firebase 的情况下向 Flutter 应用程序发送推送通知。
-
使用flutter_local_notifications 包发送到本地通知
示例代码:
@override
void initState()
super.initState();
var initializationSettingsAndroid = AndroidInitializationSettings('ypur-icon-name(icon)');
var initializationSettingsIOS = IOSInitializationSettings();
var initializationSettings = InitializationSettings(
android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: _onNotificationClicked);
Future _showNotification() async
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'Channel id', 'Your notification ID', 'Notification name',
importance: Importance.defaultImportance,
priority: Priority.defaultPriority);
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
android: androidPlatformChannelSpecifics,
iOS: iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
'Notification Alert ?',
'Message - There is a new notification on your account, kindly check it out',
platformChannelSpecifics,
payload:
'Message - There is a new notification on your account, kindly check it out',
);
然后您创建一个函数或在单击通知时仅显示一个对话框 例如
Future _onNotificationClicked() async
return showDialog();
);
对于颤振本地通知,您可以查看软件包文档以获取更多信息,您可以使用的另一种方法是将此本地通知连接到您的数据库/服务器或 API,以便它可以随时调用您的 API用户将收到通知。等等
-
OneSignal: 是一个免费的移动应用推送通知服务。该 SDK 可让您轻松将 Flutter iOS 和/或 Android 应用与 OneSignal 集成,它还用于支持移动 + 网络推送、电子邮件、SMS 和应用内消息。
该软件包在 pub.dev - onesignal
上可用【讨论】:
以上是关于如何在没有firebase的情况下显示推送通知?的主要内容,如果未能解决你的问题,请参考以下文章