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

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

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

【问题讨论】:

  • 推送通知需要在带有 APN 的 Android 和 iOS 上使用 FCM。如果您只想显示本地通知,那就不同了。推送通知主要用于在应用关闭时接收数据。
  • 那我怎样才能显示本地通知呢?现在你能告诉我如何简单地显示推送通知,如果我从服务器收到任何消息,或者如果我按下屏幕上的任何按钮,它会显示推送通知。
  • 查看 Navin 的回复:stackoverflow.com/a/60110301/3743245

标签: flutter dart push-notification


【解决方案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 应用程序发送推送通知。

    1. 使用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用户将收到通知。等等

    1. OneSignal: 是一个免费的移动应用推送通知服务。该 SDK 可让您轻松将 Flutter iOS 和/或 Android 应用与 OneSignal 集成,它还用于支持移动 + 网络推送、电子邮件、SMS 和应用内消息。

    该软件包在 pub.dev - onesignal

    上可用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 2015-04-24
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多