CLVisit monitoring in one SDK degrades continuous CLLocationManager updates for a second SDK in the same app (app-wide impact)

Issue Summary

Our app integrates two third-party telematics SDKs that each create their own CLLocationManager:

  1. Core Engine — continuous GPS, geofence monitoring, and significant location changes for trip telematics
  2. Radar SDK — location tracking that can enable startMonitoringVisits() (CLVisit)

When Radar visit monitoring is enabled, Core Engine experiences severe location data loss — sparse or missing didUpdateLocations callbacks during active trip recording, despite Core Engine calling startUpdatingLocation() with:

  • desiredAccuracy = kCLLocationAccuracyBest
  • distanceFilter = kCLDistanceFilterNone
  • pausesLocationUpdatesAutomatically = false
  • allowsBackgroundLocationUpdates = true

When Radar visit monitoring is disabled, Core Engine location behavior returns to normal on the same devices and iOS versions.

The issue is reproducible in field testing and is not isolated to a single iOS version.

Expected Behavior

Per our understanding of Core Location:

  • Each CLLocationManager instance should deliver delegate callbacks to its own delegate independently.

  • startMonitoringVisits() should provide visit arrival/departure events without materially degrading continuous startUpdatingLocation() on a separate CLLocationManager in the same app that is configured for high-accuracy continuous tracking.

Actual Behavior

With Radar CLVisit enabled:

  • Core Engine’s CLLocationManager receives far fewer or no didUpdateLocations callbacks during periods when continuous updates are required (e.g. active driving).

  • Telematics data is incomplete or missing.

  • Behavior is worse when the Radar SDK initializes before the Core Engine SDK.

  • Disabling startMonitoringVisits() in Radar resolves the issue without other Core Engine code changes.

Technical Notes

  • Two separate CLLocationManager instances, separate delegates.

  • Visit monitoring appears to affect app-wide location behavior, not only the manager that registered it.

  • Geofence usage across both SDKs may approach the ~20 region limit, but data loss persisted even when geofence count was within limits in our tests.

  • Issue reproduced across multiple iOS versions, not tied to a single OS release.

Request to Apple

We would appreciate guidance on the following:

  • Is it expected that startMonitoringVisits() on one CLLocationManager can significantly reduce or suppress didUpdateLocations on a separate CLLocationManager configured for continuous high-accuracy tracking in the same app?
  • If yes, is there documented guidance for running visit monitoring alongside continuous location in multi-SDK apps?
  • Is there a recommended pattern (shared manager, ordering, capability flags, background session APIs) for multiple SDKs needing different location strategies in one process?
  • Should this be treated as a bug or documentation gap?

I would say your conclusion to your observations of degraded continuous updates is incorrect.

This is more likely being caused by whatever your app might be doing when Radar is enabled, rather than CoreLocation being degraded by the addition of a new service.

The issue is likely most likely the Radar functionality saturating the same thread location updates are being received (by default they will be on the main thread).

You can test this by skipping all your app does when Radar is enabled except for calling startMonitoringVisits(), and see if the problem is still there.

If only starting visits is causing the same problem by no additional processing in your app, then a Bug Report would be in order.

If you do so, in your bug report we would need some diagnostics logs as well. Please go to https://developer.apple.com/bug-reporting/profiles-and-logs/ and follow the instructions for Location services for iOS to install a logging profile on your device.

Then reproduce the issue, and follow the instructions at the above link to create a sysdiagnose.

And attach that to the bug report as well.

CLVisit monitoring in one SDK degrades continuous CLLocationManager updates for a second SDK in the same app (app-wide impact)
 
 
Q