app_badger 0.0.2 copy "app_badger: ^0.0.2" to clipboard
app_badger: ^0.0.2 copied to clipboard

A Flutter plugin to update app badge count on Android (including Xiaomi devices) and iOS. This plugin allows you to set and remove app icon badges on supported platforms.

app_badger Flutter Plugin #

A Flutter plugin to manage app badge counts on different Android devices (including Xiaomi, Samsung, HTC, Sony, Huawei, OPPO, and others) using the ShortcutBadger library.

Installation #

To use the app_badger plugin in your Flutter project, add it to your pubspec.yaml file:

dependencies:
  app_badger: ^0.0.1

Then, run the following command in the terminal:

flutter pub get

Required Setup for Android #

The plugin requires specific configurations in the AndroidManifest.xml file to ensure compatibility with various device brands (Xiaomi, Samsung, HTC, Sony, Huawei, etc.).

1. Add Permissions and Receiver to AndroidManifest.xml #

To enable the badge feature on different Android devices, add the following entries inside the <application> tag in your android/app/src/main/AndroidManifest.xml file:

<receiver
    android:name="me.leolin.shortcutbadger.impl.XiaomiHomeBadger"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BADGE_COUNT_UPDATE" />
    </intent-filter>
</receiver>

<!-- Permissions for Xiaomi -->
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

<!-- Permissions for Samsung -->
<uses-permission android:name="com.sec.android.provider.badge.permission.READ" />
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />

<!-- Permissions for HTC -->
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT" />

<!-- Permissions for Sony -->
<uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE" />
<uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE" />

<!-- Permissions for Apex -->
<uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT" />

<!-- Permissions for Solid -->
<uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE" />

<!-- Permissions for Huawei -->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE" />
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS" />

<!-- Permissions for ZUK -->
<uses-permission android:name="android.permission.READ_APP_BADGE" />

<!-- Permissions for OPPO -->
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS" />

<!-- Permissions for EvMe -->
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_READ" />
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_WRITE" />

2. Additional Requirement: Notifications #

The badge count update functionality will only work if triggered by local notifications or push notifications. Therefore, make sure to trigger the badge count update when a notification is received.

  • For local notifications, you can use the flutter_local_notifications package or any other method to trigger local/push notifications.
  • For push notifications, ensure that your Firebase or other push notification service triggers the badge update when a new push notification is received.

Required Setup for iOS #

In your iOS Info.plist, add the following to request permissions for notifications:

<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
    <string>remote-notification</string>
</array>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your app needs access to location to show notifications</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Your app needs access to location to show notifications</string>

Additionally, make sure that your AppDelegate.swift is properly configured:

import UIKit
import Flutter
import app_badger  // Import the plugin here

@main
@objc class AppDelegate: FlutterAppDelegate {
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        GeneratedPluginRegistrant.register(with: self) // Register the Flutter plugins
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
}

Usage #

Update Badge Count #

To update the badge count on supported devices:

import 'package:app_badger/app_badger.dart';

void _updateBadge() {
  AppBadger.updateBadgeCount(5); // Set badge count to 5
}

Remove Badge #

To remove the badge count:

import 'package:app_badger/app_badger.dart';

void _removeBadge() {
  AppBadger.removeBadge(); // Remove badge
}

Check if Badge is Supported #

To check if the badge functionality is supported on the device:

import 'package:app_badger/app_badger.dart';

void _checkBadgeSupport() async {
  bool isSupported = await AppBadger.isBadgeSupported();
  print("Badge supported: $isSupported");
}

Troubleshooting #

  • Badge Not Showing on Xiaomi Devices: Make sure to add the Xiaomi receiver and permissions in the AndroidManifest.xml as mentioned above.
  • Badge Not Working: Badge counts may not be supported on all devices, and some device manufacturers require specific permissions or settings.
  • Notification Badge Only Works After Notification: Ensure that your badge count update is triggered by a notification, whether it’s a local notification or a push notification.

Contributing #

Feel free to open issues or pull requests for any features or bug fixes.

3
likes
160
points
256
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to update app badge count on Android (including Xiaomi devices) and iOS. This plugin allows you to set and remove app icon badges on supported platforms.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on app_badger