如何在没有firebase的情况下显示推送通知?

Posted

技术标签:

【中文标题】如何在没有firebase的情况下显示推送通知?【英文标题】:How to show push notification in flutter without firebase? 【发布时间】:2020-05-23 07:06:35 【问题描述】:

在我的颤振应用程序中,我必须在没有 firebase 的情况下显示推送通知。在点击特定 API 后,我的服务器会向我发送一条消息,并且我想将该消息显示为推送通知。

你能告诉我如何在颤振中做到这一点吗?

【问题讨论】:

推送通知需要在带有 APN 的 androidios 上使用 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的情况下显示推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 将 Firebase 通知推送给没有 Firebase 身份验证的特定用户

适用于 Android 的 Firebase 推送通知

我可以在不经过端点的情况下发送推送通知吗?角 6

推送到firebase数据库时如何设置推送键?

Firebase 推送通知的打开率显示没有数据

如何在没有 azure 的情况下为 UWP 注册推送通知?