expo-background-task 55.0.14 → 55.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/expo/modules/backgroundtask/BackgroundTaskScheduler.kt +14 -0
  4. package/expo-module.config.json +1 -1
  5. package/ios/BackgroundTaskScheduler.swift +116 -55
  6. package/ios/ExpoBackgroundTask.podspec +8 -0
  7. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15-sources.jar +0 -0
  8. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15-sources.jar.md5 +1 -0
  9. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15-sources.jar.sha1 +1 -0
  10. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15-sources.jar.sha256 +1 -0
  11. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15-sources.jar.sha512 +1 -0
  12. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.aar +0 -0
  13. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.aar.md5 +1 -0
  14. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.aar.sha1 +1 -0
  15. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.aar.sha256 +1 -0
  16. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.aar.sha512 +1 -0
  17. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/{55.0.14/expo.modules.backgroundtask-55.0.14.module → 55.0.15/expo.modules.backgroundtask-55.0.15.module} +22 -22
  18. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.module.md5 +1 -0
  19. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.module.sha1 +1 -0
  20. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.module.sha256 +1 -0
  21. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.module.sha512 +1 -0
  22. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/{55.0.14/expo.modules.backgroundtask-55.0.14.pom → 55.0.15/expo.modules.backgroundtask-55.0.15.pom} +1 -1
  23. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.pom.md5 +1 -0
  24. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.pom.sha1 +1 -0
  25. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.pom.sha256 +1 -0
  26. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.15/expo.modules.backgroundtask-55.0.15.pom.sha512 +1 -0
  27. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/maven-metadata.xml +4 -4
  28. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/maven-metadata.xml.md5 +1 -1
  29. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/maven-metadata.xml.sha1 +1 -1
  30. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/maven-metadata.xml.sha256 +1 -1
  31. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/maven-metadata.xml.sha512 +1 -1
  32. package/package.json +2 -2
  33. package/spm.config.json +3 -0
  34. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14-sources.jar +0 -0
  35. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14-sources.jar.md5 +0 -1
  36. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14-sources.jar.sha1 +0 -1
  37. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14-sources.jar.sha256 +0 -1
  38. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14-sources.jar.sha512 +0 -1
  39. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.aar +0 -0
  40. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.aar.md5 +0 -1
  41. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.aar.sha1 +0 -1
  42. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.aar.sha256 +0 -1
  43. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.aar.sha512 +0 -1
  44. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.module.md5 +0 -1
  45. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.module.sha1 +0 -1
  46. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.module.sha256 +0 -1
  47. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.module.sha512 +0 -1
  48. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.pom.md5 +0 -1
  49. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.pom.sha1 +0 -1
  50. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.pom.sha256 +0 -1
  51. package/local-maven-repo/host/exp/exponent/expo.modules.backgroundtask/55.0.14/expo.modules.backgroundtask-55.0.14.pom.sha512 +0 -1
package/CHANGELOG.md CHANGED
@@ -10,6 +10,13 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 55.0.15 — 2026-04-10
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [Android] Prevent background task registration from replacing an already scheduled or running worker. ([#44663](https://github.com/expo/expo/pull/44663) by [@chrfalch](https://github.com/chrfalch))
18
+ - [iOS] Fixed a race when rescheduling background tasks concurrently. ([#44666](https://github.com/expo/expo/pull/44666) by [@chrfalch](https://github.com/chrfalch))
19
+
13
20
  ## 55.0.14 — 2026-04-09
14
21
 
15
22
  _This version does not introduce any user-facing changes._
@@ -4,13 +4,13 @@ plugins {
4
4
  }
5
5
 
6
6
  group = 'host.exp.exponent'
7
- version = '55.0.14'
7
+ version = '55.0.15'
8
8
 
9
9
  android {
10
10
  namespace "expo.modules.backgroundtask"
11
11
  defaultConfig {
12
12
  versionCode 23
13
- versionName "55.0.14"
13
+ versionName "55.0.15"
14
14
  consumerProguardFiles("proguard-rules.pro")
15
15
  }
16
16
  }
@@ -79,6 +79,20 @@ object BackgroundTaskScheduler {
79
79
  return false
80
80
  }
81
81
 
82
+ val existingWorkInfo = getWorkerInfo(context)
83
+
84
+ // During startup/headless restore, task consumers register again while the
85
+ // unique worker is already scheduled or executing. Replacing it here resets
86
+ // the pending run or cancels the active run, which can create a
87
+ // cancel/reschedule loop.
88
+ if (
89
+ cancelExisting &&
90
+ (existingWorkInfo?.state == WorkInfo.State.ENQUEUED || existingWorkInfo?.state == WorkInfo.State.RUNNING)
91
+ ) {
92
+ Log.d(TAG, "Worker is already scheduled, skipping cancel-and-replace scheduling.")
93
+ return true
94
+ }
95
+
82
96
  // Stop the current worker (if any)
83
97
  if (cancelExisting) {
84
98
  stopWorker(context)
@@ -9,7 +9,7 @@
9
9
  "publication": {
10
10
  "groupId": "host.exp.exponent",
11
11
  "artifactId": "expo.modules.backgroundtask",
12
- "version": "55.0.14",
12
+ "version": "55.0.15",
13
13
  "repository": "local-maven-repo"
14
14
  }
15
15
  }
@@ -1,18 +1,28 @@
1
1
  // Copyright 2024-present 650 Industries. All rights reserved.
2
2
  import BackgroundTasks
3
+ import Foundation
3
4
 
4
- public class BackgroundTaskScheduler {
5
- /**
6
- * Keep track of number of registered task consumers
7
- */
8
- static var numberOfRegisteredTasksOfThisType: Int = 0
5
+ protocol BackgroundTaskScheduling: Sendable {
6
+ func cancel(taskRequestWithIdentifier identifier: String)
7
+ func submit(_ request: BGProcessingTaskRequest) throws
8
+ func pendingTaskRequests() async -> [BGTaskRequest]
9
+ }
9
10
 
10
- /**
11
- * Interval for task scheduler. The iOS BGTaskScheduler does not guarantee that the number of minutes will be
12
- * exact, but it indicates when we'd like the task to start. This will be set to at least 12 hours
13
- */
14
- private static var intervalSeconds: TimeInterval = 12 * 60 * 60
11
+ private struct SystemBackgroundTaskScheduler: BackgroundTaskScheduling {
12
+ func cancel(taskRequestWithIdentifier identifier: String) {
13
+ BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: identifier)
14
+ }
15
15
 
16
+ func submit(_ request: BGProcessingTaskRequest) throws {
17
+ try BGTaskScheduler.shared.submit(request)
18
+ }
19
+
20
+ func pendingTaskRequests() async -> [BGTaskRequest] {
21
+ return await BGTaskScheduler.shared.pendingTaskRequests()
22
+ }
23
+ }
24
+
25
+ public class BackgroundTaskScheduler {
16
26
  /**
17
27
  A one-time async gate that becomes ready after BGTaskScheduler registration finishes.
18
28
  Multiple awaiters will be resumed when ready; subsequent awaiters return immediately.
@@ -48,6 +58,86 @@ public class BackgroundTaskScheduler {
48
58
  */
49
59
  private static let registrationGate = RegistrationGate()
50
60
 
61
+ private actor SchedulerState {
62
+ private var scheduler: BackgroundTaskScheduling = SystemBackgroundTaskScheduler()
63
+ private var numberOfRegisteredTasksOfThisType: Int = 0
64
+ private var intervalSeconds: TimeInterval = 12 * 60 * 60
65
+
66
+ func didRegisterTask(minutes: Int?) -> Bool {
67
+ if let minutes = minutes {
68
+ intervalSeconds = Double(minutes) * 60
69
+ }
70
+ numberOfRegisteredTasksOfThisType += 1
71
+
72
+ return numberOfRegisteredTasksOfThisType == 1
73
+ }
74
+
75
+ func didUnregisterTask() -> Bool {
76
+ numberOfRegisteredTasksOfThisType = max(0, numberOfRegisteredTasksOfThisType - 1)
77
+ return numberOfRegisteredTasksOfThisType == 0
78
+ }
79
+
80
+ func hasRegisteredTasks() -> Bool {
81
+ return numberOfRegisteredTasksOfThisType > 0
82
+ }
83
+
84
+ func scheduleWorker() throws {
85
+ if numberOfRegisteredTasksOfThisType == 0 {
86
+ print("Background Task: skipping scheduling. No registered tasks")
87
+ return
88
+ }
89
+
90
+ stopWorkerOnce()
91
+
92
+ let request = BGProcessingTaskRequest(identifier: BackgroundTaskConstants.BackgroundWorkerIdentifier)
93
+ request.requiresNetworkConnectivity = true
94
+ request.requiresExternalPower = false
95
+ request.earliestBeginDate = Date().addingTimeInterval(intervalSeconds)
96
+
97
+ do {
98
+ try scheduler.submit(request)
99
+ } catch let error as BGTaskScheduler.Error {
100
+ switch error.code {
101
+ case .unavailable:
102
+ throw CouldNotRegisterWorkerTask("Background task scheduling is unavailable.")
103
+ case .tooManyPendingTaskRequests:
104
+ throw CouldNotRegisterWorkerTask("Too many pending task requests.")
105
+ case .notPermitted:
106
+ throw CouldNotRegisterWorkerTask("Task request not permitted.")
107
+ @unknown default:
108
+ print("An unknown BGTaskScheduler error occurred.")
109
+ }
110
+ } catch {
111
+ throw CouldNotRegisterWorkerTask("Unknown error occurred.")
112
+ }
113
+ }
114
+
115
+ func stopWorker() {
116
+ stopWorkerOnce()
117
+ }
118
+
119
+ func isWorkerRunning() async -> Bool {
120
+ let requests = await scheduler.pendingTaskRequests()
121
+ return requests.contains(where: { $0.identifier == BackgroundTaskConstants.BackgroundWorkerIdentifier })
122
+ }
123
+
124
+ func setSchedulerForTesting(_ scheduler: BackgroundTaskScheduling) {
125
+ self.scheduler = scheduler
126
+ }
127
+
128
+ func resetForTesting(registeredTaskCount: Int = 0) {
129
+ scheduler = SystemBackgroundTaskScheduler()
130
+ numberOfRegisteredTasksOfThisType = registeredTaskCount
131
+ intervalSeconds = 12 * 60 * 60
132
+ }
133
+
134
+ private func stopWorkerOnce() {
135
+ scheduler.cancel(taskRequestWithIdentifier: BackgroundTaskConstants.BackgroundWorkerIdentifier)
136
+ }
137
+ }
138
+
139
+ private static let schedulerState = SchedulerState()
140
+
51
141
  /**
52
142
  Call from the BackgroundTaskAppDelegate after the call to BGTaskScheduler.shared.register has finished
53
143
  so that we can hold back any tryScheduleWorker calls, especially the call to BGTaskScheduler.shared.submit
@@ -63,13 +153,8 @@ public class BackgroundTaskScheduler {
63
153
  * Call when a task is registered to keep track of how many background task consumers we have
64
154
  */
65
155
  public static func didRegisterTask(minutes: Int?) {
66
- if let minutes = minutes {
67
- intervalSeconds = Double(minutes) * 60
68
- }
69
- numberOfRegisteredTasksOfThisType += 1
70
-
71
- if numberOfRegisteredTasksOfThisType == 1 {
72
- Task {
156
+ Task {
157
+ if await schedulerState.didRegisterTask(minutes: minutes) {
73
158
  try await tryScheduleWorker()
74
159
  }
75
160
  }
@@ -79,9 +164,8 @@ public class BackgroundTaskScheduler {
79
164
  * Call when a task is unregistered to keep track of how many background task consumers we have
80
165
  */
81
166
  public static func didUnregisterTask() {
82
- numberOfRegisteredTasksOfThisType -= 1
83
- if numberOfRegisteredTasksOfThisType == 0 {
84
- Task {
167
+ Task {
168
+ if await schedulerState.didUnregisterTask() {
85
169
  await stopWorker()
86
170
  }
87
171
  }
@@ -91,7 +175,7 @@ public class BackgroundTaskScheduler {
91
175
  * Tries to schedule the worker task to run
92
176
  */
93
177
  public static func tryScheduleWorker() async throws {
94
- if numberOfRegisteredTasksOfThisType == 0 {
178
+ if await !schedulerState.hasRegisteredTasks() {
95
179
  print("Background Task: skipping scheduling. No registered tasks")
96
180
  return
97
181
  }
@@ -99,52 +183,29 @@ public class BackgroundTaskScheduler {
99
183
  // Wait until BGTaskScheduler registration has completed.
100
184
  await registrationGate.awaitReady()
101
185
 
102
- // Stop existing tasks
103
- await stopWorker()
104
-
105
- // Create request
106
- let request = BGProcessingTaskRequest(identifier: BackgroundTaskConstants.BackgroundWorkerIdentifier)
107
-
108
- // We'll require network but accept running on battery power.
109
- request.requiresNetworkConnectivity = true
110
- request.requiresExternalPower = false
111
-
112
- // Set up mimimum start date
113
- request.earliestBeginDate = Date().addingTimeInterval(intervalSeconds)
114
-
115
- do {
116
- try BGTaskScheduler.shared.submit(request)
117
- } catch let error as BGTaskScheduler.Error {
118
- switch error.code {
119
- case .unavailable:
120
- throw CouldNotRegisterWorkerTask("Background task scheduling is unavailable.")
121
- case .tooManyPendingTaskRequests:
122
- throw CouldNotRegisterWorkerTask("Too many pending task requests.")
123
- case .notPermitted:
124
- throw CouldNotRegisterWorkerTask("Task request not permitted.")
125
- @unknown default:
126
- print("An unknown BGTaskScheduler error occurred.")
127
- // Handle any future cases added by Apple
128
- }
129
- } catch {
130
- // All other errors
131
- throw CouldNotRegisterWorkerTask("Unknown error occurred.")
132
- }
186
+ try await schedulerState.scheduleWorker()
133
187
  }
134
188
 
135
189
  /**
136
190
  Cancels the worker task
137
191
  */
138
192
  public static func stopWorker() async {
139
- BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: BackgroundTaskConstants.BackgroundWorkerIdentifier)
193
+ await schedulerState.stopWorker()
140
194
  }
141
195
 
142
196
  /**
143
197
  Returns true if the worker task is pending
144
198
  */
145
199
  public static func isWorkerRunning() async -> Bool {
146
- let requests = await BGTaskScheduler.shared.pendingTaskRequests()
147
- return requests.contains(where: { $0.identifier == BackgroundTaskConstants.BackgroundWorkerIdentifier })
200
+ return await schedulerState.isWorkerRunning()
201
+ }
202
+
203
+ static func setSchedulerForTesting(_ scheduler: BackgroundTaskScheduling) async {
204
+ await schedulerState.setSchedulerForTesting(scheduler)
205
+ }
206
+
207
+ static func resetForTesting(registeredTaskCount: Int = 0) async {
208
+ await schedulerState.resetForTesting(registeredTaskCount: registeredTaskCount)
148
209
  }
149
210
 
150
211
  /**
@@ -20,8 +20,16 @@ Pod::Spec.new do |s|
20
20
  s.dependency 'ExpoModulesCore'
21
21
 
22
22
  s.source_files = "**/*.{h,m,swift}"
23
+ s.exclude_files = 'Tests/'
23
24
  s.pod_target_xcconfig = {
24
25
  'DEFINES_MODULE' => 'YES',
25
26
  'SWIFT_COMPILATION_MODE' => 'wholemodule'
26
27
  }
28
+
29
+ s.test_spec 'Tests' do |test_spec|
30
+ # ExpoModulesCore requires React-hermes or React-jsc in tests, add ExpoModulesTestCore for the underlying dependencies
31
+ test_spec.dependency 'ExpoModulesTestCore'
32
+
33
+ test_spec.source_files = 'Tests/**/*.{m,swift}'
34
+ end
27
35
  end
@@ -0,0 +1 @@
1
+ 9c5ac76d175cfc8eaed98e41a355c09e300be03335aaef21e144995510cde275
@@ -0,0 +1 @@
1
+ 8adf96abf78f93e8fb1c5639e2b03c33f855f575fe35bbef966bb33b9961c5aa2feceed2d2a8c69cfbf3b7b83089f4de402dbceb3cf2510f34c5484bcc496b6b
@@ -0,0 +1 @@
1
+ 59a3583deaae7f233ed1ae300dac03ae552579ee90ee56e47fe65920f95849ff
@@ -0,0 +1 @@
1
+ 49bdfed27767e0712574cb0c7c45677fff81bfc451e4052872f0949e5446b12ba3e9beec18279a810cda9178522fc4a8c1db4be2a6f50775ae6de059ebbbd99e
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "host.exp.exponent",
5
5
  "module": "expo.modules.backgroundtask",
6
- "version": "55.0.14",
6
+ "version": "55.0.15",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.backgroundtask-55.0.14.aar",
28
- "url": "expo.modules.backgroundtask-55.0.14.aar",
29
- "size": 48239,
30
- "sha512": "504a707aef633a08702b5702e2a69ed78600151f2799f1f874f4ab7ed49c9456a6bf822602e327c8e64e48a8d9fe6a0b5c201762925c89ff6e4ad214621a60ce",
31
- "sha256": "349f57bc232939e96b67f1f6d4ec14c1c48a0ffaba8356da05734aa093a31502",
32
- "sha1": "4c618d52125c305ef61b767ff7d245204b457f60",
33
- "md5": "325944011c4aed445e1ad57003be21b0"
27
+ "name": "expo.modules.backgroundtask-55.0.15.aar",
28
+ "url": "expo.modules.backgroundtask-55.0.15.aar",
29
+ "size": 48429,
30
+ "sha512": "49bdfed27767e0712574cb0c7c45677fff81bfc451e4052872f0949e5446b12ba3e9beec18279a810cda9178522fc4a8c1db4be2a6f50775ae6de059ebbbd99e",
31
+ "sha256": "59a3583deaae7f233ed1ae300dac03ae552579ee90ee56e47fe65920f95849ff",
32
+ "sha1": "ebbc7ff99fffe116bfabb07719711b2479665c2b",
33
+ "md5": "75ec6f3392a6181995e85f2103462c55"
34
34
  }
35
35
  ]
36
36
  },
@@ -64,13 +64,13 @@
64
64
  ],
65
65
  "files": [
66
66
  {
67
- "name": "expo.modules.backgroundtask-55.0.14.aar",
68
- "url": "expo.modules.backgroundtask-55.0.14.aar",
69
- "size": 48239,
70
- "sha512": "504a707aef633a08702b5702e2a69ed78600151f2799f1f874f4ab7ed49c9456a6bf822602e327c8e64e48a8d9fe6a0b5c201762925c89ff6e4ad214621a60ce",
71
- "sha256": "349f57bc232939e96b67f1f6d4ec14c1c48a0ffaba8356da05734aa093a31502",
72
- "sha1": "4c618d52125c305ef61b767ff7d245204b457f60",
73
- "md5": "325944011c4aed445e1ad57003be21b0"
67
+ "name": "expo.modules.backgroundtask-55.0.15.aar",
68
+ "url": "expo.modules.backgroundtask-55.0.15.aar",
69
+ "size": 48429,
70
+ "sha512": "49bdfed27767e0712574cb0c7c45677fff81bfc451e4052872f0949e5446b12ba3e9beec18279a810cda9178522fc4a8c1db4be2a6f50775ae6de059ebbbd99e",
71
+ "sha256": "59a3583deaae7f233ed1ae300dac03ae552579ee90ee56e47fe65920f95849ff",
72
+ "sha1": "ebbc7ff99fffe116bfabb07719711b2479665c2b",
73
+ "md5": "75ec6f3392a6181995e85f2103462c55"
74
74
  }
75
75
  ]
76
76
  },
@@ -84,13 +84,13 @@
84
84
  },
85
85
  "files": [
86
86
  {
87
- "name": "expo.modules.backgroundtask-55.0.14-sources.jar",
88
- "url": "expo.modules.backgroundtask-55.0.14-sources.jar",
89
- "size": 6850,
90
- "sha512": "0fc8a6188061d8818a320cd4c27e02e406cd4bf49aaef15fc95536365ff20a70d5e599ba86698b3b058fa676a7116f5d8530b0d0437eb90092e0d0593edb09bb",
91
- "sha256": "b8464c6ac3c14d1f3fed11e436deb971f7203a5389a08fda08951223923d2fca",
92
- "sha1": "eef76a3a8677882a27631db75889b6bf335c4323",
93
- "md5": "6582670e029a9168663b0d9fba910a92"
87
+ "name": "expo.modules.backgroundtask-55.0.15-sources.jar",
88
+ "url": "expo.modules.backgroundtask-55.0.15-sources.jar",
89
+ "size": 7029,
90
+ "sha512": "8adf96abf78f93e8fb1c5639e2b03c33f855f575fe35bbef966bb33b9961c5aa2feceed2d2a8c69cfbf3b7b83089f4de402dbceb3cf2510f34c5484bcc496b6b",
91
+ "sha256": "9c5ac76d175cfc8eaed98e41a355c09e300be03335aaef21e144995510cde275",
92
+ "sha1": "9656a131c33e8072afee896bbc3456844f29c188",
93
+ "md5": "cc5f7b350792bbd18ff6a1f04663ed7c"
94
94
  }
95
95
  ]
96
96
  }
@@ -0,0 +1 @@
1
+ 260eebccc2c54f7048c659ecce1bdd4dbac11e2a0dc966831a994e377bb19381
@@ -0,0 +1 @@
1
+ 6eeb7cd5bec9e48d82b8c01f905975eac9e7180c57c0f288dd8c1f5e182c44f755da1298bb6e5466eae76b6f267d76f37faf2b914c4c300522c3cac9dd68f193
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>host.exp.exponent</groupId>
11
11
  <artifactId>expo.modules.backgroundtask</artifactId>
12
- <version>55.0.14</version>
12
+ <version>55.0.15</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.backgroundtask</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ 732baa2327039b3f0690a45edd3810f34eaacb0044cbb83cfdfe7a71b3922a5b
@@ -0,0 +1 @@
1
+ 0c18d9442abd98d0b6f5112af46b67086245deb187bf390099714b2f212740df2332041242f5e1583c17642042379bf1d88bd14e2ea4a6cf2c54cfdf7c87da85
@@ -3,11 +3,11 @@
3
3
  <groupId>host.exp.exponent</groupId>
4
4
  <artifactId>expo.modules.backgroundtask</artifactId>
5
5
  <versioning>
6
- <latest>55.0.14</latest>
7
- <release>55.0.14</release>
6
+ <latest>55.0.15</latest>
7
+ <release>55.0.15</release>
8
8
  <versions>
9
- <version>55.0.14</version>
9
+ <version>55.0.15</version>
10
10
  </versions>
11
- <lastUpdated>20260409135053</lastUpdated>
11
+ <lastUpdated>20260410152604</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- 83f359ebc54a924f079d164ebd7fffec
1
+ b11649cb6ffb2c306c80dbbfea4b8e89
@@ -1 +1 @@
1
- 26bdcd5e97daf1326e4c8467f6fb2138b3203c97
1
+ 760d4b7fd9cdaa819babe5762175feec2664b137
@@ -1 +1 @@
1
- 65ec7cbf156c1263778fca9b7a1be4026c597c9ce6fd4f959ffc38abd6078867
1
+ eb45337fdebe61c17d2e1ec792c858179f0a5b8fdbc9d21f0b618c1e7704dac2
@@ -1 +1 @@
1
- 0e9a4fa4a5ed0ade7b49fcccee615ec619a1a33b776f0a9627113657431cab9131b7fa464ad0e0581edd6fefa38029c1f7067aeed08a7d8a1860cb3e181148cd
1
+ fcf14dbb21988e75b25f4b3de576eaef6e0ab9becd29c35a0d9f6b87715da225e22a116e0eaa417823a151e9d455b56ea93a5a0fa523fc7b0d3e14eba5ee6207
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-background-task",
3
- "version": "55.0.14",
3
+ "version": "55.0.15",
4
4
  "description": "Expo Android and iOS module for Background Task APIs",
5
5
  "main": "build/BackgroundTask.js",
6
6
  "types": "build/BackgroundTask.d.ts",
@@ -40,5 +40,5 @@
40
40
  "peerDependencies": {
41
41
  "expo": "*"
42
42
  },
43
- "gitHead": "b0ada30fd6a819c5f98a23d99b1b89a2ed68743d"
43
+ "gitHead": "ba4ff190e5abefff1a7758006bf822d14e223218"
44
44
  }
package/spm.config.json CHANGED
@@ -19,6 +19,9 @@
19
19
  "name": "ExpoBackgroundTask",
20
20
  "path": "ios",
21
21
  "pattern": "*.swift",
22
+ "exclude": [
23
+ "Tests/**"
24
+ ],
22
25
  "dependencies": [
23
26
  "Hermes",
24
27
  "React",
@@ -1 +0,0 @@
1
- b8464c6ac3c14d1f3fed11e436deb971f7203a5389a08fda08951223923d2fca
@@ -1 +0,0 @@
1
- 0fc8a6188061d8818a320cd4c27e02e406cd4bf49aaef15fc95536365ff20a70d5e599ba86698b3b058fa676a7116f5d8530b0d0437eb90092e0d0593edb09bb
@@ -1 +0,0 @@
1
- 349f57bc232939e96b67f1f6d4ec14c1c48a0ffaba8356da05734aa093a31502
@@ -1 +0,0 @@
1
- 504a707aef633a08702b5702e2a69ed78600151f2799f1f874f4ab7ed49c9456a6bf822602e327c8e64e48a8d9fe6a0b5c201762925c89ff6e4ad214621a60ce
@@ -1 +0,0 @@
1
- 9656b7afd7a7c74f8508ec5943905d4a4de28004f88b329f8a0d08e621539a6e
@@ -1 +0,0 @@
1
- faaa51ae675acce4bf91355b2d9dcfe1ebaa1a831a756e8b1a4ee0895ac42248982835482693d10963fbfd7b8f606a10af0883f0a5975c47d5c01244d2b1f0b6
@@ -1 +0,0 @@
1
- ffb4a73d29cc5870e3e768441b1355d5f48169099edf96525536247f8851e924
@@ -1 +0,0 @@
1
- c4f2a8997be398c1b6ff26a84dbb0b542570ca7b5fa930454d0e1beb23cdcd4e0dff97a44ab341d54b14e9abe1a65ed7839c1e8069ad56dd4a20c802c8d73313