npm package: @skhye05/plugin-badge
Description: Add a plugin description
Author: Jonathan Mayunga
Latest version: 1.0.3

# @skhye05/plugin-badge

This plugin will allow you to set badge notification.

## This  plugin is an update of [nativescript-plugin-badge]([nativescript-plugin-badge](https://github.com/gogoout/nativescript-plugin-badge))  for nartivescript higher 7

## Installation

## NativeScript 7+:

```bash
ns plugin add @skhye05/plugin-badge
```

### NativeScript lower than 7:

```bash
tns plugin add nativescript-plugin-badge
```

## Screenshots

![IOS](https://raw.githubusercontent.com/gogoout/nativescript-plugin-badge/master/screenshots/ios.png)

![Android](https://raw.githubusercontent.com/gogoout/nativescript-plugin-badge/master/screenshots/android.png)

## Usage

    ```typescript
    import {requestPremissions, setBadge, removeBadge} from 'nativescript-plugin-badge';

    setBadge(5);

    removeBadge();
    ```

## Platform controls used:

| Android                                                          | iOS    |
| ---------------------------------------------------------------- | ------ |
| [ShortcutBadger](https://github.com/leolin310148/ShortcutBadger) | Native |

## API

| Function                                                                         | Description                                                              |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| requestPremissions():Promise<boolean>                                            | Will return if user granted the premission or not. See description below |
| setBadge(badge:number)                                                           | set badge                                                                |
| removeBadge()                                                                    | clear badge                                                              |
| applyNotification(notification: Notification, badge: number, channelId?: string) | See description below                                                    |

## Supported Devices (Android)

Please check the [library](https://github.com/leolin310148/ShortcutBadger) used.

## Premission

Premission is only required in IOS, in android, the promise will always resolved as true.
Please note that if you have already used plugin handled premissions, like [Firebase](https://github.com/EddyVerbruggen/nativescript-plugin-firebase), [Local Notification](https://github.com/EddyVerbruggen/nativescript-local-notifications), then there is no need to call this function again.

## Miui(Xiaomi device) support

Since from Xiaomi changed the way to show badge by notification from Miui 6.

`setBadge` will not support Xiaomi devices.

If you want to support badges for Xiaomi, you have to send notifications. And use

```typescript
applyNotification({ title: 'title', body: 'body' }, 5, 'channel id');
```

channelId is an optional param and only available on API Level 26. And also will **need you to setup the channel**. See this [example](https://stackoverflow.com/a/53706086) here.

## Drawback

The ShortcutBadger used for android use the MainActivity name to identify the app. Which will make all the Nativescript apps with the default activity('com.tns.NativeScriptActivity') get setted.
That's the reason for the android screenshot -- all the nativescript apps have the same badge 5.
The solution is to use a custom main activity as [described here](https://docs.nativescript.org/core-concepts/android-runtime/advanced-topics/extend-application-activity)

## License

Apache License Version 2.0