Downloaded example app from here
Xcode version: Version 26.1.1 (17B100)
Simulator iOS Version: 26.1 & 18.5
Set custom location in the simulator to the center of the condition being monitored in the example. The only log entry was "Setup Monitor". Tried a custom gpx starting at the same point and moving 500m away. Same logs.
Didn't change any of the source code, granted always permissions, allowed notifications, tapped "AddCircularGeographicCondition".
Let me know if there is something I am missing or more information I can provide.
Maps & Location
RSS for tagLearn how to integrate MapKit and Core Location to unlock the power of location-based features in your app.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
As title says. Surely rendering bitmaps is something the hardware could handle, right? Please enable MKTileOverlay for watchOS.
Does DL-TDoA ranging in the Nearby Interaction framework support building a traditional RTLS-style TDoA localization system, where a device’s absolute position is computed from time-difference measurements across multiple deployed anchors, or is DL-TDoA strictly limited to system-managed, relative ranging and direction estimation (distance/direction) between nearby devices?
If DL-TDoA ranging in Nearby Interaction is not intended to support traditional RTLS-style TDoA localization, is there any public documentation or reference material that describes the intended DL-TDoA architecture, such as the expected system setup, device roles, and deployment constraints (for example, how ranging is expected to be performed between an iPhone and nearby accessories), beyond the high-level API documentation?
Regards.
We have developed an iPad application using the ARCL (AR + CoreLocation) library to render Point of Interest (POI) annotations in both an AR view and a standard MapView. The application performs as expected on standard devices.
However, we have some iPad covered with strong magnet. This creates significant magnetic interference, resulting in a 90° to 180° heading offset, rendering the AR POI placement and MapView orientation unusable.
Technical Challenges & Constraints:
Hardware Lock: The magnetic cover is a mandatory business requirement and cannot be removed during field use.
Sensor Failure: The internal magnetometer cannot provide an accurate North reference due to the proximity of the cover’s magnets. While CoreLocation and CoreMotion use sensor fusion, the magnetometer remains the primary source for absolute heading.
Alternative Orientation Tracking: Is there a documented method to bypass the magnetometer and derive device orientation using only the Gyroscope and Accelerometer (e.g., relative tracking) while still maintaining alignment with geographic coordinates in CoreLocation?
Programmatic Offsets: Are there known APIs or mathematical workarounds to programmatically "nullify" or offset a constant magnetic bias once the device is inside the cover? so we can use that offset for ARView and in Mapview as well.
Hi all,
Our company is applying for the Find My certification for our smartwearable product. Now we submitted the product plan and it's approved. The lab asked us to get the token but we searched on internet and the documents about it are limited. The CSR has approved and we already had .pem and .key file. I wonder what should we do next. Any helps are appreciated
The documentation for CLGeocoder states
Geocoding requests are rate-limited for each app, so making too many requests in a short period of time may cause some of the requests to fail. (When the maximum rate is exceeded, the geocoder returns an error object with the CLError.Code.network error to the associated completion handler.)
And it provides helpful guidance on how and when to submit geocoding requests.
The documentation for MKReverseGeocodingRequest does not mention requests are rate-limited. Does this mean it is not rate-limited? If it is rate-limited, is it similar to CLGeocoder, what is its behavior?
It is important to understand behavior of the API in order to understand impact on my app’s use case and how users will be affected should I change the implementation. Thanks!
In MapKit, the MKAnnotation takes a CLLocationCoordinate2D. However, in 3D/Flyover mode, the user marker has a height position on the map.
We are currently plotting points which have altitude, speed, heading, etc, and I have a method for creating a CLLocation with this information. What I'm trying to figure out is if there's a way to pass that information along to the MapKit rendering engine / annotations / AnnotationViews to recognize and show when in 3D mode. Is there any support for that currently?
hi,
When changing the map to Satellite in Apple Maps and centering it on Ōmuta City, Fukuoka Prefecture, Japan (as shown in the image), the app crashes when swiping to the right. This issue also occurs in MapKit, and I confirmed it happens in Apple Maps as well. It seems that either the satellite map tiles are missing or an error is occurring.
Our application is experiencing a crash, and this has become a serious issue.
Since September 1, crashes have increased significantly. Initially, we suspected that the issue was due to our application’s implementation, but our investigation revealed that the problem lies with the map tiles being called through MapKit.
Could you please investigate this issue and provide a fix?
Hello,
This is my first post in the forums, and I'm still learning my way with iOS Development and Swift. My apologies if the formatting is not correct, or If I'm making any mistakes.
I'm currently trying to implement an iOS App where the device needs to share the location with my server via an API call.
The use case is as follows: the server expects location updates to determine if a device is inside/outside a geofence. If the device is stationary, no locations need to be sent. If the device begins moving, regardless of whether the app is in foreground, background, or terminated, the app should resume posting locations to the server.
I've decided to use the CLLocationUpdate.liveUpdates() stream, together with CLBackgroundActivitySession().
However, I have not been able to achieve the behavior successfully. My app either maintains the blue CLActivitySession indicator active, regardless of whether the phone is stationary or not, or kills the Indicator (and the background capability) and does not restore it when moving again. Below I've attached my latest code snippet (the indicator disappears and does not come back).
// This method is called in the didFinishLaunchingWithOptions
func startLocationUpdates(precise: Bool) {
// Show the location permission pop up
requestAuthorization()
// Stop any previous sessions
stopLocationUpdates()
Task {
do {
// If we have the right authorization, we will launch the updates in the background
// using CLBackgroundActivitySession
if self.manager.authorizationStatus == .authorizedAlways {
self.backgroundActivity = true
} else {
self.backgroundActivity = false
self.backgroundSession?.invalidate()
}
// We will start collecting live location updates
for try await update in CLLocationUpdate.liveUpdates() {
// Handle deprecation
let stationary = if #available(iOS 18.0, *) {
update.stationary
} else {
update.isStationary
}
// If the update is identified as stationary, we will skip this update
// and turn off background location updates
if stationary {
self.backgroundSession?.invalidate()
continue
}
// if background activity is enabled, we restore the Background Activity Session
if backgroundActivity == true { self.backgroundSession = CLBackgroundActivitySession() }
guard let location = update.location else { continue }
// Do POST with location to server
}
} catch {
print("Could not start location updates")
}
}
}
I'm not sure why the code does not work as expected, and I believe I may be misunderstanding how the libraries Work. My understanding is that the liveUpdates stream is capable of emitting values, even if the app has gone to the background/terminated, thus why I'm trying to stop/resume the Background Activity using the "stationary" or "isStationary" attribute coming from the update.
Is the behavior I'm trying to achieve possible? If so, I'm I using the right libraries for it? Is my implementation correct? And If not, what would be the recommended approach?
Regards
I am new to Find My network development and i am going to use Nordic solution for my FMN application.
I have asked the MFi representative to enable the "Find My network" in our MFi portal. But there are just a sets of PDF in the "Find My network" under "Technology" in MFi Portal.
Is there any Find My network Supplementary Agreement in MFi portal? Is it a PDF or where can i find it?
Because I need to sign this document back to Nordic solution representative. But it seems there are no such
FMN Supplementary Agreement.
Hello,
I’d like to ask about best practices for handling interactive snippet intents when working with the user’s location.
My use case is:
1. Get the user’s location
2. Fetch nearby data
3. Display it
My current flow is: try to show the snippet view in "loading" state while waiting for Core Location Manager, then fetch data and reload() the view.
BUT I’m running into an issue where I sometimes receive Core Location error 1 (not authorized), even though the main app has “While In Use” authorization.
It seems that in some cases, especially when the app has been force-closed, App Intents are unable to start location updates, even though I’m using supportedModes = .foreground(.dynamic).
Any guidance would be appreciated.
Cheers,
Ondrej
Topic:
App & System Services
SubTopic:
Maps & Location
Tags:
Core Location
Maps and Location
Intents
App Intents
Recently I noticed an app called “Lookus”. Even if I force‑kill it, it still seems to obtain information such as my charging status and network status, and it can even send real‑time notifications. I’m curious how this is technically possible. Does anyone know how this could be achieved?
Since integrating MapKit JS, we’ve begun receiving production error reports with the following message:
Uncaught DataCloneError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': ArrayBuffer is not detachable and could not be cloned.
It appears that MapKit JS’s internal worker occasionally calls postMessage() with an ArrayBuffer that cannot be detached under Chrome 120+. This causes the structured clone to fail and the error surfaces uncaught from within the worker.
MapKit JS Version: 5.79.109
Browser: Chrome 120.0+
OS: Windows 10
Is this a known issue with MapKit JS? If so, are there recommended workarounds or planned fixes?
Hello,
I am developing with the Nearby Interaction framework using third-party UWB accessories (Murata SR040/SR150).
I observed a difference between U1-based and U2-based iPhones:
iPhone 12 Pro (U1 chip)
NINearbyObject.direction returns valid 3D vector (x, y, z).
Distance and direction both work as expected.
iPhone 15 Pro and iPhone 16 Pro (U2 chip)
NINearbyObject.direction is always nil.
Only distance is returned (around 0.35–0.40 m in my test).
Effectively behaves as "distance-only mode".
Environment:
Hardware: iPhone 12 Pro, iPhone 15 Pro
iOS version: 18.5
Accessory: Murata UWB SR040 / SR150
App: Using NINearbyAccessoryConfiguration with BLE-based discovery
Info.plist includes NSNearbyInteractionUsageDescription
Camera assistance was tested both ON and OFF
Expectation:
I expected the U2 chip to behave consistently with U1, i.e. provide direction vectors when possible.
Instead, on iPhone 15 Pro, direction is always unavailable (nil) while distance is returned correctly.
Questions:
Is this an intentional limitation for U2 chip + third-party accessories?
Is there a new requirement (e.g. certification, firmware update, capability flags) to enable direction on U2 devices?
Could this be related to NIDeviceCapability or the new Extended Distance Measurement (EDM) mode in U2?
Thanks in advance for any clarification.
Hi, this is a series of questions for the Apple developers, and also for anyone that would like to speculate. How are they able to get trees marked on the in-app map? And how come they are fairly but not completely accurately marked?
Topic:
App & System Services
SubTopic:
Maps & Location
Hi, based on https://developer.apple.com/help/account/configure-app-capabilities/create-a-maps-identifier-and-private-key described, I need to create an Identifier before I can create JWT for MapKit JS. However, I cannot find Maps Ids checkbox when I attempt to set up first MapKit JS access.
I'm following:
https://developer.apple.com/documentation/applemapsserverapi/creating-a-maps-identifier-and-a-private-key#Create-a-Maps-ID
to create map id and private key. On step #4 I can't find "Maps IDs checkbox" on the web page, blow is the screen capture which contains all options I have on my page:
I am experiencing a persistent issue with my CarPlay application where images rendered within the CarPlay Template interface disappear after the application has been used for an extended period, typically during prolonged navigation.
Images used directly within the CarPlay Template framework disappear. In the attached image showing the issue (IMG_1022.PNG), you can see that the icons for 'parking', 'gasstation', 'conveniencestore', and 'favoritespot' are missing. The side bar icons (car, battery, etc.) remain visible, and the text labels are present, but the Template-specific images/icons vanish.
Problem Description
Images displayed on a custom UIViewController remain visible. Some of our screens integrate a UIViewController (e.g., for map display), and any images rendered on that view controller (not the template itself) continue to display correctly without issue.
Example Images
IMG_1021.PNG (Normal/Correct Display): This image shows the SearchMenu screen with all icons displayed correctly next to their respective labels ('word', 'home', 'route', 'history', 'parking', 'gasstation', 'conveniencestore', 'favoritespot').
IMG_1022.PNG (Problem State): This image shows the same screen after prolonged use, where the icons next to 'parking', 'gasstation', 'conveniencestore', and 'favoritespot' have disappeared, leaving only the text labels.
Question
Has anyone encountered a similar issue? This seems to be a rendering or resource management problem specific to images within the CarPlay Template components when the application runs for an extended duration.
1. The Inquiry
Hello,
I have been implementing a background geofencing feature and, during testing, I found a significant numerical difference in event callback frequency between the older CLCircularRegion API and the newer CLMonitor API (CLMonitor.CircularGeographicCondition), introduced in iOS 17.
My testing was strictly conducted using the "Always Allow" location permission (requestAlwaysAuthorization()). I used both APIs in parallel under identical geofencing conditions and within the same implementation environment. Since a clear difference persists in the data, I suspect this may stem from structural differences in the internal mechanisms of the two APIs rather than an implementation error on my part.
2. Environment and Implementation Details (Proof of Integrity)
I have ensured that my implementation adheres to Apple's guidelines and uses modern Swift concurrency features.
A. Development Environment and Permissions
iOS Version: iOS 18.x and later
Xcode Version: Version 17A400 (Version 26.0.1)
Location Authorization: Always permission obtained.
Background Mode: Location updates is configured correctly in Info.plist.
B. CLMonitor Initialization and Lifecycle
I implemented robust lifecycle management to ensure CLMonitor is stable and persists correctly:
Initialization: I performed CLLocationManager object allocation and related service setup (e.g., CLServiceSession set to always) within the call stack frame of didFinishLaunchingWithOptions.
Monitor Management: I use an Actor-based Singleton pattern to guarantee that only a single CLMonitor instance is used application-wide.
Event Monitoring: Following initialization, I allocated a background Task containing the for try await event in await monitor.events loop. This Task is explicitly managed to persist in the background until the application is terminated, ensuring continuous event listening.
C. Registration Limit Management
I manage both APIs to ensure they never exceed the recommended maximum of 20 simultaneously monitored regions/conditions. My logic removes the oldest item (LRU) when the limit is reached.
The average registration counts during the test period were highly similar:
Component
Average Registered Count
CLCircularRegion count
7.02
CLMonitor.CircularGeographicCondition count
7.04
This confirms that registration count is not the cause of the event frequency difference.
3. Data-Based Observation
The test data (bubble_test_data_for_apple_forum.csv) records the event callbacks for both APIs under identical conditions:
Component
Total Count
Percentage of All Events (%)
CLCircularRegion Delegate Total Calls
617
83.56%
CLMonitor Event Total Fires
122
16.44%
Overall Total Count
739
100%
A. Key Findings
CLCircularRegion Operability: 617 calls confirm that core implementation factors (permissions, background setup, etc.) are functioning correctly.
Disparity in Frequency: Despite running in parallel, the CLMonitor event count (122) is approximately 1/5th the frequency of the CLCircularRegion calls (617).
Efficiency per Registration: CLCircularRegion averaged ~0.86 calls per registered item, while CLMonitor averaged only ~0.17 calls per registered item.
4. Questions for Apple Engineering
Based on the robust implementation and the data presented, I request a review of the following potential differences between the APIs:
Internal Mechanism Differences: Are there structural differences in how CLCircularRegion and CLMonitor.CircularGeographicCondition process and schedule geofencing event callbacks? For instance, do they differ in terms of battery optimization priority, event batching, or internal throttling mechanisms?
CLMonitor Event Ratio: Is the phenomenon where CLMonitor records a significantly lower ratio of events compared to CLCircularRegion an intended behavior, or could this be indicative of a specific environmental factor that affects the newer API differently?
Thank you for your time and assistance.
geofence-test-data.csv
I'm trying to simulate GPS in the iOS Simulator, but Debug → Simulate Location is greyed out even though I'm:
Running the iOS scheme
On an iPhone simulator only (no watch paired)
Build configuration = Debug
allowLocationSimulation="YES" in the scheme
Topic:
App & System Services
SubTopic:
Maps & Location