$ yarn add react-native-background-fetch
$ npm install --save react-native-background-fetch
The SDK requires a custom maven url
in the root android/build.gradle
.
Please note that some more recent versions of React Native the Android template may not include allprojects
section. You should add this manually as a separate section along with the nested repositories
section in the same android/build.gradle
file.
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
+ maven {
+ // react-native-background-fetch
+ url("${project(':react-native-background-fetch').projectDir}/libs")
+ }
}
}
If you're using minifyEnabled true
with your Android release build, the plugin's HeadlessTask
class will be mistakenly removed and you will have this crash.
- Edit
android/app/proguard-rules.pro
. - Add the following rule:
# [react-native-background-fetch]
-keep class com.transistorsoft.rnbackgroundfetch.HeadlessTask { *; }
Only If you wish to use precise scheduling of events with forceAlarmManager: true
, Android 14 (SDK 34), has restricted usage of "AlarmManager
exact alarms". To continue using precise timing of events with Android 14, you can manually add this permission to your AndroidManifest
. Otherwise, the plugin will gracefully fall-back to "in-exact AlarmManager
scheduling":
📂 In your AndroidManifest
, add the following permission (exactly as-shown):
<manifest>
<uses-permission android:minSdkVersion="34" android:name="android.permission.USE_EXACT_ALARM" />
.
.
.
</manifest>