@capawesome-team/capacitor-android-foreground-service
v6.1.0
Published
Capacitor plugin to run a foreground service on Android.
Downloads
1,268
Maintainers
Readme
@capawesome-team/capacitor-android-foreground-service
Capacitor plugin to run a foreground service on Android.
Installation
npm install @capawesome-team/capacitor-android-foreground-service
npx cap sync
Android
This API requires the following permissions be added to your AndroidManifest.xml
before or after the application
tag:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Required to request the manage overlay permission -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Attention: Replace FOREGROUND_SERVICE_LOCATION
with the foreground service types you want to use (see Foreground service types).
You also need to add the following receiver and service inside the application
tag in your AndroidManifest.xml
:
<receiver android:name="io.capawesome.capacitorjs.plugins.foregroundservice.NotificationActionBroadcastReceiver" />
<service android:name="io.capawesome.capacitorjs.plugins.foregroundservice.AndroidForegroundService" android:foregroundServiceType="location" />
Attention: Replace location
with the foreground service types you want to use (see Foreground service types).
Configuration
No configuration required for this plugin.
Demo
A working example can be found here: robingenz/capacitor-plugin-demo
| Android | | ------------------------------------------------------------------------------------------------------------------------------- | | |
Usage
import { Capacitor } from '@capacitor/core';
import { ForegroundService } from '@capawesome-team/capacitor-android-foreground-service';
const startForegroundService = async () => {
if (Capacitor.getPlatform() !== 'android') {
return false;
}
await ForegroundService.startForegroundService();
};
const stopForegroundService = async () => {
if (Capacitor.getPlatform() !== 'android') {
return false;
}
await ForegroundService.stopForegroundService();
};
API
moveToForeground()
startForegroundService(...)
updateForegroundService(...)
stopForegroundService()
checkPermissions()
requestPermissions()
checkManageOverlayPermission()
requestManageOverlayPermission()
createNotificationChannel(...)
deleteNotificationChannel(...)
addListener('buttonClicked', ...)
removeAllListeners()
- Interfaces
- Type Aliases
- Enums
moveToForeground()
moveToForeground() => Promise<void>
Moves the app to the foreground.
On Android SDK 23+, the user must grant the manage overlay permission.
You can use the requestManageOverlayPermission()
method to request the
permission and the checkManageOverlayPermission()
method to check if the
permission is granted.
Only available on Android.
Since: 0.3.0
startForegroundService(...)
startForegroundService(options: StartForegroundServiceOptions) => Promise<void>
Starts the foreground service.
Only available on Android.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------- |
| options
| StartForegroundServiceOptions |
Since: 0.0.1
updateForegroundService(...)
updateForegroundService(options: UpdateForegroundServiceOptions) => Promise<void>
Updates the notification details of the running foreground service.
Only available on Android.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------- |
| options
| StartForegroundServiceOptions |
Since: 6.1.0
stopForegroundService()
stopForegroundService() => Promise<void>
Stops the foreground service.
Only available on Android.
Since: 0.0.1
checkPermissions()
checkPermissions() => Promise<PermissionStatus>
Check permission to display notifications.
On Android, this method only needs to be called on Android 13+.
Only available on Android.
Returns: Promise<PermissionStatus>
Since: 5.0.0
requestPermissions()
requestPermissions() => Promise<PermissionStatus>
Request permission to display notifications.
On Android, this method only needs to be called on Android 13+.
Only available on Android.
Returns: Promise<PermissionStatus>
Since: 5.0.0
checkManageOverlayPermission()
checkManageOverlayPermission() => Promise<ManageOverlayPermissionResult>
Check if the overlay permission is granted.
Only available on Android.
Returns: Promise<ManageOverlayPermissionResult>
Since: 0.3.0
requestManageOverlayPermission()
requestManageOverlayPermission() => Promise<ManageOverlayPermissionResult>
Request the manage overlay permission.
Only available on Android.
Returns: Promise<ManageOverlayPermissionResult>
Since: 0.3.0
createNotificationChannel(...)
createNotificationChannel(options: CreateNotificationChannelOptions) => Promise<void>
Create a notification channel. If not invoked, the plugin creates a channel with name and description set to "Default".
Only available for Android (SDK 26+).
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------------- |
| options
| CreateNotificationChannelOptions |
Since: 6.1.0
deleteNotificationChannel(...)
deleteNotificationChannel(options: DeleteNotificationChannelOptions) => Promise<void>
Delete a notification channel.
Only available for Android (SDK 26+).
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------------- |
| options
| DeleteNotificationChannelOptions |
Since: 6.1.0
addListener('buttonClicked', ...)
addListener(eventName: 'buttonClicked', listenerFunc: ButtonClickedEventListener) => Promise<PluginListenerHandle>
Called when a notification button is clicked.
Only available on iOS.
| Param | Type |
| ------------------ | --------------------------------------------------------------------------------- |
| eventName
| 'buttonClicked' |
| listenerFunc
| ButtonClickedEventListener |
Returns: Promise<PluginListenerHandle>
Since: 0.2.0
removeAllListeners()
removeAllListeners() => Promise<void>
Remove all listeners for this plugin.
Since: 0.2.0
Interfaces
StartForegroundServiceOptions
| Prop | Type | Description | Default | Since |
| --------------------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ----- |
| body
| string | The body of the notification, shown below the title. | | 0.0.1 |
| buttons
| NotificationButton[] | The buttons to show on the notification. Only available on Android (SDK 24+). | | 0.2.0 |
| id
| number | The notification identifier. | | 0.0.1 |
| smallIcon
| string | The status bar icon for the notification. Icons should be placed in your app's res/drawable
folder. The value for this option should be the drawable resource ID, which is the filename without an extension. | | 0.0.1 |
| title
| string | The title of the notification. | | 0.0.1 |
| silent
| boolean | If true, will only alert (sound/vibration) on the first notification. Subsequent updates will be silent. | false | 6.1.0 |
| notificationChannelId
| string | The notification channel identifier. | | 6.1.0 |
NotificationButton
| Prop | Type | Description | Since |
| ----------- | ------------------- | ----------------------------------------------------------------------------------------------------- | ----- |
| title
| string | The button title. | 0.2.0 |
| id
| number | The button identifier. This is used to identify the button when the buttonClicked
event is emitted. | 0.2.0 |
PermissionStatus
| Prop | Type | Description | Since |
| ------------- | ----------------------------------------------------------- | --------------------------------------------- | ----- |
| display
| PermissionState | Permission state of displaying notifications. | 5.0.0 |
ManageOverlayPermissionResult
| Prop | Type | Description | Since |
| ------------- | -------------------- | -------------------------------------------------------------------------------- | ----- |
| granted
| boolean | Whether the permission is granted. This is always true
on Android SDK < 23. | 0.3.0 |
CreateNotificationChannelOptions
| Prop | Type | Description | Since |
| ----------------- | ------------------------------------------------- | ------------------------------------------------------------------- | ----- |
| description
| string | The description of this channel (presented to the user). | 6.1.0 |
| id
| string | The channel identifier. | 6.1.0 |
| importance
| Importance | The level of interruption for notifications posted to this channel. | 6.1.0 |
| name
| string | The name of this channel (presented to the user). | 6.1.0 |
DeleteNotificationChannelOptions
| Prop | Type | Description | Since |
| -------- | ------------------- | ----------------------- | ----- |
| id
| string | The channel identifier. | 6.1.0 |
PluginListenerHandle
| Prop | Type |
| ------------ | ----------------------------------------- |
| remove
| () => Promise<void> |
ButtonClickedEvent
| Prop | Type | Description | Since |
| -------------- | ------------------- | ---------------------- | ----- |
| buttonId
| number | The button identifier. | 0.2.0 |
Type Aliases
UpdateForegroundServiceOptions
StartForegroundServiceOptions
PermissionState
'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'
ButtonClickedEventListener
(event: ButtonClickedEvent): void
Enums
Importance
| Members | Value | Since |
| ------------- | -------------- | ----- |
| Min
| 1 | 6.1.0 |
| Low
| 2 | 6.1.0 |
| Default
| 3 | 6.1.0 |
| High
| 4 | 6.1.0 |
| Max
| 5 | 6.1.0 |
Changelog
See CHANGELOG.md.
License
See LICENSE.