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

时间:2020-02-07 06:51:38

标签: flutter dart push-notification

在我的flutter应用程序中,我必须显示没有Firebase的推送通知。在点击特定的API之后,我的服务器将向我发送一条消息,并且该消息我希望显示为推送通知。

你能告诉我一种方法吗?

4 个答案:

答案 0 :(得分:4)

您可以使用本地通知插件

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);

答案 1 :(得分:3)

您可以使用OneSignal.com。它是您可以找到的最好的免费和可靠的服务之一。

您仍然必须为其设置一个Firebase项目,但是其余所有操作都可以通过OneSignal Portal进行管理。它们还提供了一个API,用于将通知发送到Android和iOS设备。

他们已经有了plugin for Flutter and a documentation的如何将系统集成到应用中的方法。

答案 2 :(得分:1)

尚不兼容最新的 Flutter 版本(空安全)

答案 3 :(得分:0)

有两种主要方式可以向没有 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();
);

对于flutter本地通知,您可以查看包文档以获取更多信息,另一种可以使用的方法是将此本地通知连接到您的数据库/服务器或API,以便它可以随时调用您的API用户会收到通知。等

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

该软件包在 pub.dev 上可用 - onesignal