I managed to create a workaround that is poor code design but should solve the issue.
func startMonitoringConditions() {
Task {
monitor = await CLMonitor(MonitorNames.monitorName)
if let identifiers = await monitor?.identifiers {
if identifiers.count == 0 {
if let coordinate = manager.location?.coordinate {
await addNewRegionAtCoordinate(coordinate: coordinate)
}
}
else {
print("Previous Monitor Region is used.")
}
}
while continueTrackingRegions {
for try await event in await monitor!.events {
if let coordinate = manager.location?.coordinate {
// do something
await monitor!.remove(event.identifier)
await addNewRegionAtCoordinate(coordinate: coordinate)
break
}
}
}
}
}
This update seems to work for me although I am unable to fully confirm if it works 100% of the time because I am now running into an issue with the new SwiftData API. Gotta love ModelContexts...
Topic:
App & System Services
SubTopic:
Maps & Location
Tags: