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.
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
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
hello
I am Asmaa Atine
I would like to suggest an improvement for the Apple Maps app.
My idea is to allow users to draw the general path they would like to follow directly on the map with their finger, and then have the app automatically generate an optimized route that follows the drawn trajectory as closely as possible.
This feature would be very useful in several situations, such as:
• when the user wants to pass through a specific area but the suggested routes don’t match,
• when they want to avoid certain places or include a particular spot,
• or when they simply want a more flexible, intuitive way to customize a route.
The concept would be:
1. the user draws a rough path on the map,
2. Apple Maps interprets the drawing,
3. and then proposes the best possible route based on that drawn line.
I believe this would greatly enhance the flexibility of Apple Maps and provide a more intuitive way to create personalized routes.
Thank you for considering this suggestion, and congratulations on the great work already done on the app.
Topic:
App & System Services
SubTopic:
Maps & Location
Hi,
I’m a member of the Apple Developer Program and I’m planning to use Apple Maps Server API together with MapKit JS for a production, customer-facing web service.
I have reviewed the Apple Developer Program License Agreement (including Schedule 6 – Apple Maps Services) and the documentation, but I still need clarification on several points to ensure that our usage fully complies with Apple’s policies.
Daily quota and additional capacity
From the documentation, I understand that there is a daily limit of 250,000 map views and 25,000 service calls per Apple Developer Program membership, shared between MapKit JS and Apple Maps Server API.
When the 25,000 service calls are exceeded, the API returns HTTP 429.
Should this limit be considered a hard limit for production use?
The wording “For additional capacity needs, contact us” is unclear.
Is there any official channel or program to request a higher quota,
or should we assume this is not practically available and design our system to always stay within the documented limit?
Caching of geocoding / reverse-geocoding results
Schedule 6 section 2.5 restricts caching, prefetching, or storing map data except when temporary and only as necessary for Apple Maps Services, and any cached data must be deleted after use.
To understand what “temporary” means in practice, I would like to confirm whether the following scenarios are acceptable:
(a) In-memory cache during a single page or tab session:
- Store geocoding results (latitude/longitude and normalized address) only in a JavaScript in-memory structure (e.g., a Map object) during the lifetime of the browser tab.
- Delete all cached results when the tab is closed or after a short TTL (for example, a few minutes).
(b) sessionStorage with a short TTL:
- Store geocoding results in window.sessionStorage on a per-tab basis.
- Apply a short TTL (for example, a few minutes), and delete the data when the TTL expires or the tab is closed.
Are both (a) and (b) considered acceptable forms of “temporary caching” under section 2.5,
or should we avoid sessionStorage and limit ourselves to purely in-memory (non-persistent) caching?
Use on a commercial customer-facing website
Our intended use case is a public website that:
Displays store locations on a map
Allows users to search for nearby stores
Optionally shows routing directions
We do not do fleet management, asset tracking, enterprise route optimization, or insurance risk scoring.
Is this type of consumer-facing store-locator use case permitted under the Apple Maps Services terms?
Any clarification from the Maps or MapKit teams would be greatly appreciated.
Thank you.
Best regards,
Naoto Omori
Are the apple weather precipitation radars available through the rest API or have I hit a brickwall. Would love to have the visuals of the native overlays in my app, cant find an affordable/comparable API. Any help would be appreciated. I really need the smooth hourly scrubbing. Not keen on rendering my own with vectors yet.
Thank you.
Since iOS 26 the delegate method locationManager(:didVisit:) is no longer invoked reliably while locationManager(:didUpdateLocations:) continues to be called regularly on the same devices. The issue appears to be directly tied to iOS version updates. Visit callbacks worked consistently under iOS 18.x but in some cases stopped being invoked immediately after updating the same device to iOS 26.0. In other cases didVisit worked on iOS 26.0 but stopped after updating to 26.0.1 and similarly from 26.0.1 to 26.1.
The behaviour is inconsistent with no identifiable pattern and affects multiple recent device models.
All required configuration is in place:
– startMonitoringVisits() is called correctly
– location permission is set to “Always”– background mode for location updates is enabled
– allowsBackgroundLocationUpdates is enabled
– restarting the app or the device does not fix the problem
The only workaround that restores visit monitoring is deleting the app and reinstalling the same App Store version which is not a viable solution for end users.
Have other developers experienced the same issue and are there any recommended best practices or technical guidelines to handle missing didVisit callbacks after updating to iOS 26?
In my app, I am using geofencing to perform an action when the user enter or leaves a specified location. The geofencing (CLMonitor) is active permanently, and should work across multiple app sessions or after the device is restarted. It should also work after the app was minimized or terminated. This worked perfectly with iOS 17 and prior, but with iOS 18, things changed. As soon as iOS 18 dropped, users were informing me that the app does no longer perform the entry/exit action reliably (without me making any changes to the app). Most of the times, events are missed entirely. Sometimes, after the user opens or resumes the app, duplicate events are delivered and/or events with the current time instead of the correct time of entry/exit.
I am making sure that the app has the "Always" location permission before geofencing is enabled
The gefocence radius is between 20 and 500m, but even with the max. radius specified, the geofencing is unreliable
For the same user and geofence, the entry/exit event is delivered occasionally, but not always
I am currently not using CLLocationManager.allowsBackgroundLocationUpdates (even though it's documented as "Apps that receive location updates when running in the background must include the UIBackgroundModes key (with the location value) in their app’s Info.plist file") because it wasn't necessary on iOS 17 and in my tests, using it didn't yield any improvements
In my search for what could have caused this change, I found this WWDC video about location authorization: . It appears that with iOS 18, it is now required to have an active CLServiceSession to ensure that location updates are delivered to my app. Even though the video is long (and I've watched it multiple times), some things are still unclear. For example, the docs state:
If your app actively receives and processes location updates and terminates, it should restart those APIs upon launch in order to continue receiving updates.
Also, in the video it is stated that:
... So your job, ..., is to make sure that your process launch logic knows what features it has been tasked with pursuing, and re-takes session objects...
But on the other hand it's also said that:
you can only start holding one (a CLServiceSession) when your app is in the foreground
and also
... CLMonitor.events won’t yield results when it is not in use, unless a session which was started in the foreground, ....
To summarize my questions, for the geofencing to work as described above:
when exactly do I need to create a CLServiceSession if the app is launched into the backgorund? Immediately in the applicationDidFinishLaunching method, even though the app is still in the background (applicationState is background)? Or later on, when the app is opened again by the user, e.g. in applicationDidBecomeActive (and applicationState is active)?
do I need to specify the background mode capability as noted in the Handling location updates in the background article?
do I need to create a CLBackgroundActivitySession as noted in the Handling location updates in the background article?
does it matter, which of the four initializer methods I am using to create the CLServiceSession (with CLServiceSessionAuthorizationRequirementAlways)?
does it matter if I specify NSLocationRequireExplicitServiceSession in the Info.plist or not when I already do ensure that the app has the "Always" location permission when the feature is being enabled
Does a CLServiceSession last indefinitely and should it only be invalidated once the user disables the feature?
I am currently using Core location to get user's current location and few surrounding coordinates to draw annotations in Augmented reality. It works best on Cellular network and on Wifi network few times it is working ok and sometimes orientation is completely changed when device is connected to WiFi. Checked on Apple map as well, there itself it was giving wrong orientation and even after user is at same location, current location on map got fluctuating. On WiFi only models GPS accuracy is not good.
Hi,
I have been working with an implementation of MapKit which show custom annotations with a detailCalloutAccessoryView built using SwiftUI. This has been working fine for many years, but starting with macOS Tahoe, somehow the SwiftUI buttons in this view have stopped being tappable.
I have reproduced the issue in the code below ... same code works fine in macOS14 and macOS15 now doesn't work correctly in macOS26:
import Cocoa
import MapKit
import SwiftUI
class ViewController: NSViewController {
private var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
setupMapView()
}
private func setupMapView() {
// Create and configure the map view
mapView = MKMapView()
mapView.translatesAutoresizingMaskIntoConstraints = false
mapView.delegate = self
view.addSubview(mapView)
// Pin the map to all edges of the view
NSLayoutConstraint.activate([
mapView.topAnchor.constraint(equalTo: view.topAnchor),
mapView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
mapView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
mapView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
// Create an annotation for San Francisco
let sanFranciscoCoordinate = CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)
let annotation = MKPointAnnotation()
annotation.coordinate = sanFranciscoCoordinate
annotation.title = "San Francisco"
annotation.subtitle = "The City by the Bay"
// Add the annotation to the map
mapView.addAnnotation(annotation)
// Center the map on San Francisco
let region = MKCoordinateRegion(center: sanFranciscoCoordinate,
latitudinalMeters: 5000,
longitudinalMeters: 5000)
mapView.setRegion(region, animated: false)
}
}
// MARK: - MKMapViewDelegate
extension ViewController: MKMapViewDelegate {
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let identifier = "CustomAnnotation"
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? MKMarkerAnnotationView
if annotationView == nil {
annotationView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView?.canShowCallout = true
// Create the SwiftUI view for the callout
let calloutView = CalloutContentView()
let hostingView = NSHostingView(rootView: calloutView)
hostingView.frame = NSRect(x: 0, y: 0, width: 200, height: 100)
// Set the SwiftUI view as the detail callout accessory
annotationView?.detailCalloutAccessoryView = hostingView
} else {
annotationView?.annotation = annotation
}
return annotationView
}
}
// MARK: - SwiftUI Callout View
struct CalloutContentView: View {
var body: some View {
VStack(spacing: 12) {
Text("Welcome to San Francisco!")
.font(.headline)
.multilineTextAlignment(.center)
HStack(spacing: 12) {
Button(action: {
print("Directions button tapped")
}) {
Label("Directions", systemImage: "arrow.triangle.turn.up.right.circle.fill")
.font(.caption)
}
.buttonStyle(.borderedProminent)
Button(action: {
print("Info button tapped")
}) {
Label("Info", systemImage: "info.circle.fill")
.font(.caption)
}
.buttonStyle(.bordered)
}
}
.padding()
.frame(width: 200)
}
}
I've looked at other problems with Map and onTap handlers not getting called, but this is a SwiftUI view inside an AppKit MapKit annotation's callout view.
Any idea of how to handle this?
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.
We are currently experiencing a very interesting issue when accessing the location in the background with CLLocationManager.
The user has given our app the "whenInUse" permission for locations and in most cases the app provides location updates even when it's in the background.
However, when we started to use other navigation apps in the foreground we saw that the func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) method was called with (kCLErrorDomain error 1.).
The user hasn't changed the location permission and we saw that locations were delivered once the user opened the app again.
I don't see anything in the documentation explaining this issue, but I chatted with other developers that confirm that specific behavior.
Am I missing something here?
Since iOS 26, the Apple Maps share sheet no longer provides a com.apple.mapkit.map-item attachment when sharing a location to my Share Extension.
Additionally, on real devices the shared URL is now a short link (https://maps.apple/p/...), which does not contain coordinates.
On the simulator, the URL still includes coordinates (as in previous iOS versions).
I'm trying to find the official or recommended way to extract coordinates from these new short URLs.
Environment:
Devices: iPhone (real device) on iOS 26.0 / 26.0.1
Simulator: iOS 26.0 / 26.0.1 simulator (behaves like iOS 18 — see below)
App: Share Extension invoked from Apple Maps -> Share -> my app
Xcode: 26.0.1
Steps to Reproduce
Open Apple Maps on iOS 26 (real device).
Pick a POI (store/restaurant).
Share -> choose my share extension.
iOS 18 and earlier
(lldb) po extensionContext?.inputItems
▿ Optional<Array<Any>>
▿ some : 1 element
- 0 : <NSExtensionItem: 0x60000000c5d0> - userInfo: {
NSExtensionItemAttachmentsKey = (
"<NSItemProvider: 0x600002930d20> {types = (\"public.plain-text\")}",
"<NSItemProvider: 0x600002930c40> {types = (\"com.apple.mapkit.map-item\")}",
"<NSItemProvider: 0x600002930bd0> {types = (\"public.url\")}"
);
}
Typical URL:
https://maps.apple.com/place?address=Apple%20Inc.,%201%20Apple%20Park%20Way,%20Cupertino,%20CA%2095014,%20United%20States&coordinate=37.334859,-122.009040&name=Apple%20Park&place-id=I7C250D2CDCB364A&map=explore
iOS 26
(lldb) po extensionContext?.inputItems
▿ 1 element
- 0 : <NSExtensionItem: 0x6000000058d0> - userInfo: {
NSExtensionItemAttachmentsKey = (
"<NSItemProvider: 0x600002900b60> {types = (\"public.url\")}",
"<NSItemProvider: 0x600002900fc0> {types = (\"public.plain-text\")}"
);
}
URL looks like:
https://maps.apple/p/U8rE9v8n8iVZjr
On simulator iOS 26 same missing map-item provider - but the URL is still long and contains coordinates, like this:
https://maps.apple.com/place?coordinate=37.334859,-122.009040&name=Apple%20Park&..
Issue
The short URLs (maps.apple/p/...) cannot be resolved directly - following redirects ends with:
https://maps.apple.com/unsupported
The only way I've found to get coordinates is to intercept intermediate redirects - one of them contains the expanded URL with coordinate=....
Example of my current workaround:
final class RedirectSniffer: NSObject, URLSessionTaskDelegate {
private(set) var redirects: [URL] = []
func urlSession(_ session: URLSession,
task: URLSessionTask,
willPerformHTTPRedirection response: HTTPURLResponse,
newRequest request: URLRequest) async -> URLRequest? {
if let url = request.url {
redirects.append(url)
}
return request
}
}
Then I look through redirects to find a URL containing "coordinate=".
This works, but feels unreliable and undocumented.
Questions
Was the removal of com.apple.mapkit.map-item from the Maps share payload intentional in iOS 26?
If yes, is there a new attachment type or API to obtain an MKMapItem?
What’s the official or supported way to resolve https://maps.apple/p/... to coordinates?
Is there any MapKit API or documented URL scheme for this?
Is intercepting redirect chains the only option for now?
Why does the iOS 26 simulator still return coordinate URLs, while real devices don't?
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?
We have a that relies on accurate GPS location but we’ve noticed that every now and then the location ‘jumps’ a few hundred meters to a different location but reports horizonal accuracy less than 10m.
we think the device is picking up a rough location from a local WiFi rather than internal gps sensors.
can we
a) disable WiFi location Updates?
b) identify WiFi location Updates?
thank You
Hello 👋🏼,
We are using MapKit JS to display maps on our application working on two domains .com and .cn. Everything is working for all ours users in the world except for users using Chinese local network.
After investigation, there is an error display in the browser console:
[MapKit] Initialization failed because the authorization token is invalid.
As the tokens are used as they are for the rest of the world, we know that they are valid... 😕
Problem appears on all browsers:
Current versions of MapKit JS
mapkit-typescript @ 5.18.2
https://cdn.apple-mapkit.com/mk/5.49.x/mapkit.js
Do you have any tips, suggestions to help us 🙏 ?
Aurélien.
I am the developer of the Progressive Web App (PWA) FindMeSAR which displays the user’s coordinates in several different formats. https://findmesar.com
When this PWA is not installed on my iPhone 17 Pro then I can use Safari to open this webpage and give permission for it to use my location. FindMeSAR works fine and displays my coordinates as latitude longitude in decimal degrees.
I can also use Safari to open Google maps and geolocation there also works fine.
But if I install FindMeSAR for use offline as a PWA then I get an error message saying location is denied.
My iPhone has the latest iOS 26.0.1
I should add that I recently traded in an iPhone 13 Pro with iOS 17. FindMeSAR worked fine on that device as a PWA including the geolocation feature.
Has anyone else with iOS 26 tried a PWA that does geolocation? Results?
Topic:
App & System Services
SubTopic:
Maps & Location
Hello,
We are a software and hardware development company for the forestry and environmental sectors. We have been based in Quebec (Canada) for over 30 years now. Our Canadian market covers Quebec, Ontario, and the Maritime provinces in the east. We are currently expanding across Canada and into the northern United States. We are on Android platforms with several map and data entry applications.
To ensure the success of our expansion, we aim to become part of the Apple family, which is why we are contacting you today.
We have developed our own GNSS receiver to increase the location accuracy of our users. This device is called GSFGPS. It uses Bluetooth BLE to communicate with mobile devices and a high-precision GPS that transmits its position using the NMEA protocol. We would like this device to be compatible with an iPhone/iPad. We have developed a mock location application in MAUI (multi-platform). Based on our interpretation of your documentation, we understand that the concept of mock location does not exist at Apple. How can we ensure that our Bluetooth GNSS device is compatible with your iPhone/iPad devices and that they can use the position of the Bluetooth device rather than the internal GPS of your devices?
We are a reseller for Juniper Systems, and we know that they have an app on the App Store that has the same features as our product.
https://junipersys.com/index.php/support/article/14709
We look forward to your follow-up and recommendations.
Hello Apple Developer Team,
I’m currently using Apple MapKit JS as the main map provider for our logistics, telematics, and HR platform TADMIN, and we are extremely satisfied with its reliability, accuracy, and visual quality.
We would now like to expand our Apple integration by migrating our backend reverse geolocation services to Apple as well. However, our current usage requirements significantly exceed the standard 25,000 daily service request limit.
At this stage, we already need between 250,000 and 350,000 reverse geocoding requests per day, and this number will continue to grow rapidly. Our TADMIN Tracking product processes live GPS data from connected vehicle telematics boxes, and each vehicle sends an average of 1.5 pings per minute in normal mode. We currently manage around 140 vehicles and are already in discussions with new customers that will add over 1,000 additional vehicles to the platform soon. As our customer base continues to expand, we expect this growth trend to accelerate significantly over the coming months.
We already make extensive use of caching to minimize redundant geolocation calls. For example, we reuse location data when vehicles remain within a defined radius. However, since trucks rarely stay stationary for long, there is still a constant flow of new coordinates that require reverse geolocation.
To give you a broader picture:
TADMIN is a comprehensive SaaS ecosystem for the transport and logistics industry, combining HR management, telematics and tracking, dispatching, and data analysis into one integrated platform.
The Tracking module is just one part of this system and serves as the live data backbone for our dispatching, HR, and telematics analytics modules.
We would therefore like to increase our quotas for:
Service Requests (especially Reverse Geocoding)
Snapshot Requests, which we use for our Geofence Alerts. These are sent via push notification and email, and we would love to include the snapshot images in the emails for a clear and visually rich presentation
MapKit JS Views, since we also use MapKit JS heavily in our web dashboards, for example in our tracking portal
Higher quotas would allow us to rely even more on Apple services, including Autocomplete and Geocoding for customer-facing address searches inside our applications.
We already have three apps published on the App Store, with a fourth one scheduled for release this week, and I will soon be upgrading my Apple Developer account to an Organization Account for our company.
We are currently evaluating providers for this next stage of integration, as we are preparing a new major version of our TADMIN software, which will introduce a reworked telematics backend. Our goal is to migrate to Apple’s geolocation and map services as part of this new release.
Could you please advise how we can best address this use case, for example through higher quotas or an adjusted configuration?
Thank you very much for your time and support.
Best regards,
Timo Köhler
Founder & CTO, TADMIN GmbH
Topic:
App & System Services
SubTopic:
Maps & Location
Tags:
Maps Web Snapshots
MapKit JS
MapKit
Apple Maps Server API
Hi,
We are using beacon ranging methods to detect beacon in foreground and background in our app. We are using beacon's UUID, major and minor values to create a beacon region and then calling locationManager.startRangingBeacons to range beacons. We listen for beacon updates via the didRangeBeacons delegate method to get beacon data emitted.
However, we've observed some inconsistent behavior:
The beacon region frequently reports exit events even when the device is within close proximity (approximately 1.5 to 2 meters).
There are instances where no beacon updates are received for extended periods (up to 15–20 minutes), despite the beacon being nearby.
Generally, The distance between the device and the beacon is approximately 1.5 - 2 meters.
What could be the reason for this behaviour and how can we avoid it and continuously receive beacon updates when the beacon is near without any delay?
Thanks
Topic:
App & System Services
SubTopic:
Maps & Location