native_push 1.0.5 copy "native_push: ^1.0.5" to clipboard
native_push: ^1.0.5 copied to clipboard

The Native Push Plugin is a Flutter plugin that provides seamless integration of push notifications across different platforms including Android, iOS, macOS, and Web.

Native Push Plugin #

The Native Push Plugin is a Flutter plugin that provides seamless integration of push notifications across different platforms including Android, iOS, macOS, and Web. This plugin allows your Flutter application to receive and handle remote notifications with ease.

Features #

  • Supports Firebase Cloud Messaging (FCM) for Android.
  • Supports Apple Push Notification Service (APNs) for iOS and macOS.
  • Supports Web Push for web applications.
  • Handles push notifications while the app is in the foreground, background, or terminated.
  • Provides methods to initialize the plugin, register for remote notifications, and retrieve the notification token.
  • Supports various notification options like alert, badge, sound, and more.

Installation #

Add the following dependency to your pubspec.yaml file:

dependencies:
  native_push: ^1.0.0

Then run flutter pub get to install the plugin.

Usage #

Import the Plugin #

import 'package:native_push/native_push.dart';

Initialize the Plugin #

Before using the plugin, you need to initialize it. This is typically done in the main.dart file of your Flutter project.

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize the native push plugin
  await NativePush.instance.initialize(
    firebaseOptions: {
      'apiKey': 'YOUR_API_KEY',
      'projectId': 'YOUR_PROJECT_ID',
      'messagingSenderId': 'YOUR_MESSAGING_SENDER_ID',
      'applicationId': 'YOUR_APP_ID',
    },
    useDefaultNotificationChannel: true,
  );

  runApp(MyApp());
}

The firebaseOptions can be omitted when not using fcm. You can use the extract_fcm_options script provided in the repository to extract the information from the google-services.json.

cat google-services.json | ./extract_fcm_options.sh <android-bundle-id>

Register for Remote Notifications #

You need to register for remote notifications to get a notification token.

await NativePush.instance.registerForRemoteNotification(
  options: [NotificationOption.alert, NotificationOption.sound],
  vapidKey: 'YOUR_VAPID_KEY', // For web push, can be omitted otherwise
);

Handling Incoming Notifications #

You can listen for incoming notifications using the notificationStream.

NativePush.instance.notificationStream.listen((notification) {
  // Handle the notification
  print('Received notification: $notification');
});

Get Initial Notification #

To handle the notification that opened the app, you can use initialNotification.

final initialNotification = await NativePush.instance.initialNotification();
if (initialNotification != null) {
  // Handle the initial notification
  print('Initial notification: $initialNotification');
}

Retrieve the Notification Token #

You can retrieve the current notification token with the following method:

final (service, token) = await NativePush.instance.notificationToken;
print('Notification Service: $service, Token: $token');

Platform Specifics #

Android #

For Android, ensure that you have add the following metadata to your application.

<meta-data
    android:name="com.google.firebase.messaging.default_notification_channel_id"
    android:value="native_push_notification_channel" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@android:drawable/ic_input_add" />

You can only use native_push_notification_channel if you set useDefaultNotificationChannel in initialize to true. Otherwise you have to create and specify your own notification channel.

You also need to the following to your main activity intent filter:

<action android:name="com.opdehipt.native_push.PUSH"/>

iOS #

You have to add the Push Notification Capability.

If you want to support images in your notification, you also have to add the Background Modes Capability and check Remote Notifications. You also have to add Notification Service Extension to your app and replace the code with the following:

import NativePushNotificationService

final class NotificationService: NativePushNotificationService {}

The NativePushNotificationService can be imported via the Swift Package Manager from here.

MacOS #

You only have to add the Push Notification Capability.

Web #

Please add the native_push.min.js to your web folder and it to native_push.js. You should also add one of native_push_sw.min.js or native_push_sw_non_localize.min.js to your web folder and rename it to native_push_sw.js. The normal script should be used if you want to localize the notification on the client side. Otherwise you should add the non_localize script. If you add the localize script, you also have to add the localization.js and add your localization logic to the localization function. You don't have to import any of the javascript files in your index.html.

Example #

An example Flutter app demonstrating the usage of the Native Push Plugin can be found in the example directory.

Contributing #

Contributions are welcome! Please submit a pull request or create an issue if you find a bug or have a feature request.

License #

This project is licensed under the BSD-3 License. See the LICENSE file for details.

3
likes
160
points
51
downloads

Publisher

verified publisheropdehipt.com

Weekly Downloads

The Native Push Plugin is a Flutter plugin that provides seamless integration of push notifications across different platforms including Android, iOS, macOS, and Web.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter, flutter_web_plugins, plugin_platform_interface, web

More

Packages that depend on native_push