We developed an IMDF indoor map for a client (paid work) which we submitted to Apple a few months ago. Our client is wondering how many months the approval process will take. Also, we would like to get paid for the work. Any estimate from that team would be appreciated. Thank you
Maps and Location
RSS for tagBuild maps and location awareness capabilities into your apps.
Posts under Maps and Location tag
102 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Previously, when using AppDelegate, I was able to check the app’s launch options (launchOptions) to determine cases such as:
Location updates (UIApplication.LaunchOptionsKey.location)
Background push notifications (UIApplication.LaunchOptionsKey.remoteNotification)
However, after migrating to the SceneDelegate approach, launchOptions is no longer available — it always returns nil.
In my app, I need to branch the code depending on the launch options, but I can’t find a way to achieve this in the SceneDelegate environment.
👉 Is there a way to access launch options in SceneDelegate, similar to how it worked in AppDelegate?
Or, if that’s no longer possible, what would be the proper alternative approach?
Any guidance would be greatly appreciated.
I have the following code snippet with a simple map and map reader that shows a pin on the map when the user selects a location
struct MapReaderTest: View {
@State private var loc: CLLocationCoordinate2D? = nil
var body: some View {
MapReader { proxy in
Map {
UserAnnotation()
if let loc {
Marker(coordinate: loc, label: { Text("Marker") })
}
}
.onTapGesture { position in
let position = proxy.convert(position, from: .local)
loc = position
}
}
}
}
This snippet compiles and works perfectly fine using Xcode version 16.4 building for iOS 18.0 and running on a device. This snippet also works for me when I build using Xcode 26 Beta and run in the canvas or simulator, however it does not work when I compile using Xcode 26 and run it on a physical device(I built and tested for both iOS 18.6 and iOS 26 Beta)
Has anyone else had a similar issue / have any ideas for work arounds?
I am encountering a coordinate rendering issue using MKMapView in my iOS app. I have a GPS coordinate in WGS84 format, which corresponds to a location in Hong Kong.
When my device is physically located in Hong Kong, MKMapView displays the map with the "Apple Maps" label, and the WGS84 coordinate is rendered at the correct position.
However, when the device is in Mainland China, MKMapView switches to display "Amap" (Gaode Maps) branding, and the same WGS84 coordinate is rendered at an incorrect position.
I understand that Amap in Mainland China uses the GCJ-02 coordinate system, while Apple Maps typically uses WGS84. This discrepancy suggests a potential coordinate system mismatch, but I cannot definitively confirm which map type (and corresponding coordinate system) MKMapView is actually using in different regions.
My key questions are:
How can I programmatically or visually confirm the underlying map type (Apple Maps vs. Amap) and its coordinate system within MKMapView?
Is there a way to simulate the Apple Maps environment for testing when physically located in Mainland China?
Our IMDF indoor maps submission is stuck on "Occupants data in review" for several months and I can't ahold of that team (their email doesn't work). I've been told they have a backlog, but the other steps were pretty fast. How long is the expected completion? Thank you!
Hi everyone,
I’m building an iOS 18+ app in Xcode where Apple Maps is central. My goal is to start with the default Apple Maps experience (map view, search bar, pins, directions sheet, etc.) and then customize it for my project.
I tried coding it from scratch using MapKit and SwiftUI, but I wasn’t able to get full parity with the basic features of the Maps app.
My questions:
Is there any sample project, template, or reference that provides the default Apple Maps functionality (views + interactions) as a baseline?
Can I copy these into my Xcode project and then extend/customize them?
If not, what’s the recommended best practice to get as close as possible to the native Maps app before adding my own features?
Any guidance, sample code, or documentation links would be greatly appreciated.
My app is currently using CLGeocoder to get a CLPlacemark, then using placemark.postalAddress with CNPostalAddressFormatter to get an attributed string for the full address, I then enumerate its attributes to pull out specific elements like just the street or state or zip etc.
This is deprecated in iOS 26 with MKReverseGeocodingRequest being the intended replacement. This API returns an MKMapItem which doesn’t provide a CNPostalAddress - you can get a full address as a String but not structured address data that I’m seeing. Am I missing some way to get the postal address? Or is it a non-goal to provide that anymore? Thanks!
Their support email is broken and our IMDF is stuck at "Occupants Data in Review" step. Thank you
I created an app. One if its functionalities is receive Remote Notification in the background, while app is monitoring Significant Location Changes (SLC). This functionality worked fine. I was receiving these notifications correctly. Sometimes instantly, sometime with small or large delay.
And then I send the app for review. It was rejected with 3 remarks:
The app or metadata includes information about third-party platforms that may not be relevant for App Store users, who are focused on experiences offered by the app itself (I wrote that app communication works both for iOS and Android.)
The app declares support for audio in the UIBackgroundModes key in your Info.plist but we are unable to locate any features that require persistent audio.
EULA (End User License Agreement) is missing for in-app purchases.
After the rejection the app is no longer receiving these notifications. They are there, since the app receives them, when I open app, or significant location change is detected. It also works, when I run the app directly from Xcode (in debug mode), not from TestFlight nor in Sandbox.
It seem to me like Apple somehow spoiled my background capabilities on purpose or accidentally. Is it possible? What can I do with it? Is it the case that I should just fix the review remarks and send the app back to review, and once the app passes it, it will work again? Or should I not count on it? Any suggestions? I asked Apple using:
https://developer.apple.com/contact/topic/#!/topic/select
but so far no response.
Topic:
App & System Services
SubTopic:
Notifications
Tags:
App Review
User Notifications
Background Tasks
Maps and Location
Hi all — I wanted to share an idea I recently submitted through Feedback Assistant that I think could improve safety and usability for drivers using CarPlay:
Add an option to overlay live weather radar (rain, snow, storms, etc.) directly onto CarPlay Maps while navigating. Similar to how traffic conditions are shown now, this would allow drivers to visually track incoming weather in real time without switching apps or relying on separate devices.
Why this matters:
• Enhances driver safety by increasing situational awareness
• Helps with trip planning and route adjustments around severe weather
• Reduces distractions by integrating everything into one screen
• Useful for everyday drivers, long-haul travelers, and first responders
I submitted this via Feedback Assistant, but I’d love to know what others think. If you also see value in this feature, consider submitting your own version via Feedback Assistant so Apple sees there’s interest.
Let’s push for smarter, safer navigation — thanks for reading!
Hello,
I'm currently implementing code to track routes and determine if users have arrived at their destination using CLServiceSession, CLBackgroundActivitySession, and CLLocationUpdate.liveUpdates.
I want to obtain location data across all app states: foreground, background, and terminated.
I have two questions:
Background Location Indicator Issue: I'm using CLBackgroundActivitySession to get location updates in the background. Normally, the background location indicator (blue bar) doesn't appear at the top left of the screen for my app. However, when another app (e.g., LiveUpdatesSample) activates CLBackgroundActivitySession, my app's background location indicator suddenly becomes visible. Can you explain why this happens? or Can I Control showsBackgroundLocationIndicator in CLBackgroundActivitySession
Session Management: Is there a way to terminate all currently active CLBackgroundActivitySessions? I understand that when CLBackgroundActivitySession is activated and the app is terminated and then relaunched, a new CLBackgroundActivitySession needs to be created. In this case, are the previously created and running CLBackgroundActivitySessions automatically released when the app is relaunched?
Hello,
I use CLGeocoder to get the CLLocationCoordinate2D and CLRegion for an address. Now that this is deprecated in OS 26, I don't see a replacement for that property on MKMapItem via MKMapItemRequest and PlaceDescriptor. I've filed FB19027378 on this issue.
Basically I have some addresses that have a street address, and others that just have a city. With CLGeocoder, when geocoding just the city, the CLRegion was set such that I could show my map zoomed out just right. I'm not sure how to do that now.
Thanks!
Good morning everyone,
I am developing a Flutter app for Android and iOS.
When I press a button, the app detects the location of the device (obviously with permissions already granted).
On Android everything works correctly.
On iOS, however, when I press the button for the first time after opening the app, the location is detected after about 30-50 seconds.
On the other hand, if I repeat the operation later, the response time is drastically reduced (only a few seconds).
I am using the location package (https://pub.dev/packages/location), and the code to get the location is as follows:
var currentLocation = await location.getLocation();
Has anyone experienced this problem before or knows how to solve it?
Thank you very much!
Federico
Hello,
I'm working on an application that requires the use of significant location changes and visits, in addition to region monitoring and standard continuous location delivery (foreground and background).
iOS 17 and iOS 18 introduced changes to how we can monitor distinct regions of interest (with CLMonitor) as well as receive location updates (with CLLocationUpdate).
But I couldn't find any information regarding how to work with
Significant location changes. Do we still need to create a location manager and call startMonitoringSignificantLocationChanges()? Where are the updates received in this case, in the locationManager(_:didUpdateLocations:) or in the liveUpdates async sequence?
Visits. Same question here, for visit monitoring to work, do we still have to create a location manager then call startMonitoringVisits()? Where are the visits being notified? Still in locationManager(_:didVisit:) or in the liveUpdates asynchronous sequence?
I just want to be sure I understand correctly how to use the updates, and if some features of Core Location still need to use a location manager and the delegate to receive the events.
Maybe additional CLCondition will be added to cover both of these technologies as it seems highly related to monitoring conditions (significant location change, and visit).
Thank you,
Axel
I am developing a navigation application. My goal is for this navigation app to also work in the background and provide the user with real-time directional updates. When apps request access to location services, users see a TCC (Transparency, Consent, and Control) prompt. This prompt allows the user to choose under what conditions the app can access location services (for example: “While Using the App”, “Always”, etc.).
If the user selects the “While Using the App” option, can the navigation app still access location in the background and provide directional information to the user? Is something like this technically possible? Does Apple allow this behavior for navigation apps or similar use cases?
Topic:
App & System Services
SubTopic:
Maps & Location
Tags:
Core Location
Maps and Location
Privacy
Dear Apple Team,
I am reaching out regarding the need for more sophisticated location verification APIs beyond basic IP lookup capabilities. As online fraud continues to evolve, IP-based geolocation has proven insufficient for many business use cases requiring accurate location verification. Would it be possible to discuss this proposal with your API development team? I believe this would be valuable for the entire iOS and macOS developer ecosystem while maintaining Apple's commitment to user privacy.
Topic:
App & System Services
SubTopic:
Maps & Location
Tags:
Security
Core Location
Maps and Location
Hello Experts,
I am in need of your help with this feedback from the App Reviewer.
Issue Description: One or more purpose strings in the app do not sufficiently explain the use of protected resources. Purpose strings must clearly and completely describe the app's use of data and, in most cases, provide an example of how the data will be used.
Next Steps: Update the location purpose string to explain how the app will use the requested information and provide a specific example of how the data will be used. See the attached screenshot.
Resources: Purpose strings must clearly describe how an app uses the ability, data, or resource. The following are hypothetical examples of unclear purpose strings that would not pass review:
"App would like to access your Contacts"
"App needs microphone access"
Feedback #2
"Regarding 5.1.1, we understand why your app needs access to location. However, the permission request alert does not sufficiently explain this to your users before accessing the location.
To resolve this issue, it would be appropriate to revise the location permission request, specify why your app needs access, and provide an example of how your app will use the user's data.
To learn more about purpose string requirements, watch a video from App Review with tips for writing clear purpose strings. We look forward to reviewing your app once the appropriate changes have been made."
May I know how can I update my purpose string? I appealed on the first feedback by explaining what is the purpose of it but got the Feedback #2.
TYIA!!
Hello all,
I'm trying to retrieve geolocation data on the web, but I'm having trouble with the altitude value, which seems to differ from what I get on Android.
When using navigator.geolocation.getCurrentPosition in Safari, is the altitude value based on mean sea level, or is it ellipsoidal altitude based on the WGS84 ellipsoid?
altitude (WebKit JS): https://developer.apple.com/documentation/webkitjs/coordinates/1631861-altitude
altitude (Core Location): https://developer.apple.com/documentation/corelocation/cllocation/altitude
ellipsoidalAltitude (Core Location): https://developer.apple.com/documentation/corelocation/cllocation/ellipsoidalaltitude
If anyone has any insight into this topic I would greatly appreciate it!
In my app, I want to launch Apple Maps and start turn-by-turn navigation when the user taps a button.
I referred to Apple’s documentation and sample projects and implemented the following code:
if let url = URL(string: "maps://?t=m&daddr=(addr)") {
self.carplayScene?.open(url, options: nil, completionHandler: nil)
}
This works only if Apple Maps has been launched at least once on the iPhone or in the CarPlay environment.
If Apple Maps has never been opened before, it launches the app but does not automatically start navigation.
However, once the user has opened Apple Maps at least once — either on the phone or through CarPlay — then navigation starts as expected from that point on.
Is this behavior expected? Or is it a bug?
Hey All!
I keep receiving an email from Apple stating "You have a missing purpose string in your Info.plist" for the key "NSLocationAlwaysAndWhenInUseUsageDescription". The thing is, though, that we are setting that value within our build Info.plist. The data in that value is even reflected into the application after build, with the correct purpose string showing up when requesting location services.
We currently do our builds via Azure Devops CI/CD, where we use xcodebuild for this process. The archive also generates an Info.plist without the location key, so I tried manually inserting it before deployment. Also no luck.
Anyone else had this issue or know how to resolve it?
Snippet to show how the location key is currently set during build:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Application uses location data for accurate maps display</string>
</dict>
</plist>
Thanks!
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight
Tags:
App Store
App Review
Maps and Location