I am developing an Augmented Reality (AR) navigation application for the iPad, utilizing the ARCL library to place Points of Interest (POIs) in the real world.
The application's behavior varies significantly based on the device's networking configuration:
Cellular Network (Expected Behavior): On an iPad with a cellular modem, when using the cellular network, all POIs are placed accurately with correct orientation.
Wi-Fi Only (Expected Behavior): On a Wi-Fi-only model (no GPS chip), POI placement is inaccurate, confirming the need for an external GPS receiver for that hardware configuration.
Cellular + Wi-Fi (Anomalous Behavior):
The iPad is a cellular model (equipped with GNSS/GPS).
The device is connected to a Wi-Fi network (enforced via an MDM profile, preventing the user from disabling Wi-Fi).
When actively connected to this specific Wi-Fi network, the AR POIs consistently display with an incorrect orientation and placement, even though the device hardware has a dedicated GPS chip. The placement error strongly suggests that the device's determined location or heading is erroneous. It appears that the active Wi-Fi connection is somehow interfering with or overriding the high-accuracy GNSS/GPS data, leading to a flawed Core Location determination that negatively impacts the ARCL world tracking and anchor placement.
Has anyone experienced a scenario where an active Wi-Fi connection on a cellular iPad model causes Core Location to prioritize less accurate location data (potentially Wi-Fi-based location services) over the device's built-in GNSS/GPS, resulting in severe orientation errors? We observed that on Apple map(native application) as well it is showing wrong location and orientation when it is connected to WiFi
General
RSS for tagDive into the vast array of tools and services available to developers.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I am developing a simple watch app and I use my personal watch for development with Xcode. Personal watch is series 10 gps only.
I have two other watches that I want to use for testing the app, but not needing them to be connected to Xcode. The test watches have cellular option, and I need a cell plan per watch because the watches need to be standalone, not counting initial setup.
To get the standalone cell plan the watches need to be configured using AWFK. Here is what I have tried/current issues.
I switch between all three watches on my phone using the watch app.
Originally tried to put test watches in developer mode, thinking I would connect to Xcode, developer mode is not available when watch is setup using AWFK.
Pushed the watch app to apple connect, setup TestFlight group, added the test users and my phone user, accepted invites
TestFlight is installed on my phone, I see the testflight setup for the watch app
I set a test watch using watch app on the phone, run install for the test app from TestFlight on the phone, spinner moves for awhile then goes back to Install.
I am not able to get the watch app installed on the test watches from the phone. Is what I am attempting to do supported? I haven't found much specific documentation on this. If I pair the test watches as regular watches, set them to developer mode, can I pair them again as AWFK and will developer mode survive the switch? Or is there something really simple that I'm overlooking?
Appreciate any help that can be extended.
I'm developing for compliance with Texas law in the United States.
Currently, I'm encountering an issue where I want to test the feature point "when the app undergoes significant changes, a supervised user initiates a request." However, during actual testing, the app pops up an error message: "Can't Ask, An Unknown error occurred."
Additionally, I see the following error message in the Xcode Console: "Error Domain=AskToCore.ATMessageComposeValidationError Code=4 'The user is in a region that does not support this type of ask.' UserInfo={NSLocalizedFailureReason=The user must be in a supported region to use this feature., NSLocalizedRecoverySuggestion=Please ensure the user is in an eligible region., NSLocalizedDescription=The user is in a region that does not support this type of ask.}"
I am indeed not in the Texas region.
I want to conduct full-process testing before the feature is released to the App Store.
What should I do?
Apart from Sandbox testing (which, in fact, doesn't show any pop-ups either), how can I test under real-world conditions?
My application always crashes at the same position when I open it on my iPad Air. It doesn't crash in debug mode which makes it very difficult for me to find the issue.
My crash report from TestFlight:
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016d5f26f0
Exception Codes: 0x0000000000000001, 0x000000016d5f26f0
VM Region Info: 0x16d5f26f0 is not in any region. Bytes after previous region: 546219761 Bytes before following region: 399632
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
MALLOC_LARGE 14c000000-14cd08000 [ 13.0M] rw-/rwx SM=PRV
---> GAP OF 0x2094c000 BYTES
Stack Guard 16d654000-16d658000 [ 16K] ---/rwx SM=NUL
Termination Reason: SIGNAL 4 Illegal instruction: 4
Terminating Process: ProjectiOS [745]
Triggered by Thread: 0
Thread 0 name:
Thread 0 name:
Thread 0 Crashed:
0 ProjectiOS 0x0000000107abf3b4 0x1026ac000 + 88159156
1 ProjectiOS 0x000000010e7d3be4 0x1026ac000 + 202537956
2 ProjectiOS 0x000000010e96c45c 0x1026ac000 + 204211292
3 ProjectiOS 0x000000010e96cadc 0x1026ac000 + 204212956
4 ProjectiOS 0x000000010e7d7ba4 0x1026ac000 + 202554276
5 ProjectiOS 0x00000001079cccc0 0x1026ac000 + 87166144
6 ProjectiOS 0x000000010945f33c 0x1026ac000 + 115028796
7 ProjectiOS 0x000000010945b648 0x1026ac000 + 115013192
8 ProjectiOS 0x0000000109458510 0x1026ac000 + 115000592
9 ProjectiOS 0x0000000107530430 0x1026ac000 + 82330672
10 ProjectiOS 0x0000000109459290 0x1026ac000 + 115004048
11 ProjectiOS 0x0000000109457584 0x1026ac000 + 114996612
12 ProjectiOS 0x00000001094b961c 0x1026ac000 + 115398172
13 ProjectiOS 0x00000001094bb8a0 0x1026ac000 + 115407008
14 ProjectiOS 0x00000001094c0340 0x1026ac000 + 115426112
15 ProjectiOS 0x000000010971e698 0x1026ac000 + 117909144
16 ProjectiOS 0x000000011104f7a4 0x1026ac000 + 244987812
17 QuartzCore 0x00000001879f4548 CA::Display::DisplayLinkItem::dispatch_(CA::SignPost::Interval<(CA::SignPost::CAEventCode)835322056>&) + 64 (CADisplay.mm:6671)
18 QuartzCore 0x00000001879d1c64 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 880 (CADisplay.mm:5794)
19 QuartzCore 0x00000001879e5394 CA::Display::DisplayLink::dispatch_deferred_display_links(unsigned int) + 360 (CADisplay.mm:4886)
20 UIKitCore 0x000000018c936afc _UIUpdateSequenceRunNext + 128 (_UIUpdateSequence.mm:189)
21 UIKitCore 0x000000018c935f8c schedulerStepScheduledMainSectionContinue + 60 (_UIUpdateScheduler.m:1197)
22 UpdateCycle 0x000000027364b560 UC::DriverCore::continueProcessing() + 84 (UCDriver.cc:288)
23 CoreFoundation 0x0000000186f8c4cc __CFMachPortPerform + 168 (CFMachPort.c:604)
24 CoreFoundation 0x0000000186fbc0b0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 60 (CFRunLoop.c:2045)
25 CoreFoundation 0x0000000186fbbfd8 __CFRunLoopDoSource1 + 508 (CFRunLoop.c:2184)
26 CoreFoundation 0x0000000186f93c1c __CFRunLoopRun + 2168 (CFRunLoop.c:3205)
27 CoreFoundation 0x0000000186f92a6c _CFRunLoopRunSpecificWithOptions + 532 (CFRunLoop.c:3462)
28 GraphicsServices 0x000000022790d498 GSEventRunModal + 120 (GSEvent.c:2049)
29 UIKitCore 0x000000018c956ba4 -[UIApplication _run] + 792 (UIApplication.m:3902)
30 UIKitCore 0x000000018c8ffa78 UIApplicationMain + 336 (UIApplication.m:5577)
31 ProjectiOS 0x0000000110d93700 0x1026ac000 + 242120448
32 ProjectiOS 0x00000001109068f0 0x1026ac000 + 237349104
33 ProjectiOS 0x000000010f5885d4 0x1026ac000 + 216909268
34 ProjectiOS 0x000000010f588908 0x1026ac000 + 216910088
35 ProjectiOS 0x0000000107cf95b8 0x1026ac000 + 90494392
36 ProjectiOS 0x000000010e85dce8 0x1026ac000 + 203103464
37 ProjectiOS 0x0000000110fadbd4 0x1026ac000 + 244325332
38 ProjectiOS 0x0000000110f48e64 0x1026ac000 + 243912292
39 ProjectiOS 0x0000000110f50004 0x1026ac000 + 243941380
40 ProjectiOS 0x0000000110fb54f4 0x1026ac000 + 244356340
41 ProjectiOS 0x0000000110de715c 0x1026ac000 + 242463068
42 ProjectiOS 0x000000011102e55c 0x1026ac000 + 244852060
43 dyld 0x0000000183faae28 start + 7116 (dyldMain.cpp:1477)
Then I symbolicated all the lines starting with "ProjectiOS" in my crash report but I cannot find the issue. Which lines in my crash report cause the crash?
Lines 0-16:
alcCaptureSamples (in ProjectiOS) + 202259184
alcCaptureSamples (in ProjectiOS) + 203932520
alcCaptureSamples (in ProjectiOS) + 203934184
alcCaptureSamples (in ProjectiOS) + 202275504
alcCaptureSamples (in ProjectiOS) + 86887372
alcCaptureSamples (in ProjectiOS) + 114750024
alcCaptureSamples (in ProjectiOS) + 114734420
alcCaptureSamples (in ProjectiOS) + 114721820
alcCaptureSamples (in ProjectiOS) + 82051900
alcCaptureSamples (in ProjectiOS) + 114725276
alcCaptureSamples (in ProjectiOS) + 114717840
alcCaptureSamples (in ProjectiOS) + 115119400
alcCaptureSamples (in ProjectiOS) + 115128236
alcCaptureSamples (in ProjectiOS) + 115147340
alcCaptureSamples (in ProjectiOS) + 117630372
BrotliEncoderHasMoreOutput (in ProjectiOS) + 2126968
Lines 31-42:
alcCaptureSamples (in ProjectiOS) + 237070332
alcCaptureSamples (in ProjectiOS) + 216630496
alcCaptureSamples (in ProjectiOS) + 216631316
alcCaptureSamples (in ProjectiOS) + 90215620
alcCaptureSamples (in ProjectiOS) + 202824692
BrotliEncoderHasMoreOutput (in ProjectiOS) + 1464488
BrotliEncoderHasMoreOutput (in ProjectiOS) + 1051448
BrotliEncoderHasMoreOutput (in ProjectiOS) + 1080536
BrotliEncoderHasMoreOutput (in ProjectiOS) + 1495496
xamarin_get_original_working_directory_path (in ProjectiOS) + 4032
BrotliEncoderHasMoreOutput (in ProjectiOS) + 1991216
Hey Im currently trying to use the weatherkit API and Im seeing the following returned:
{"reason": "OVER_QUOTA"}
Im using the correct service, key and bundle ID.
Ive generated a private key too.
In previous versions of the simulator, it was possible to import files into the Files app by dragging them from the Finder into the Simulator. It appears that in the iOS 26 Simulator, this opens the file in Safari.
I've only tried it with .json files so far.
The documentation at https://developer.apple.com/documentation/xcode/sharing-data-with-simulator says that the original behaviour should happen:
To add files to Simulator, select one or more files in Finder on your Mac, then click the Share button. Select Simulator from the share destination list. Choose the simulated device from the drop-down list. Simulator opens the Files app, and lets you select where to save the files.
I'd love to learn if this is intentional behaviour, and if so, what workarounds there might be. I use this pattern quite a lot, as I have a HealthKit app, and I've built a system that allows me to export workouts as JSON files from a real device, that I can then import into a simulator for testing.
Edit: I found a workaround. Make a folder in Files.app, then search for it within ~/Library/Developer/CoreSimulator/Devices. Open the folder in Finder, then add any files you want to be available in the Simulator.
I’ve officially given up trying to release my app on iOS.
Apple’s latest rejection quotes:
• Guideline 5.1.5 – Location Services
“The app uses location data for features that are not relevant to a user’s location. Specifically, the app is not functional when Location Services are disabled. To resolve this issue, please revise the app so that the app is fully functional without requiring the user to enable Location Services.”
• Guideline 5.1.1 – Data Collection and Storage
Complaining that the app “encourages or directs” users to go to Settings to enable location.
My app is literally built around live location. The entire point is: you walk the circuit, see telemetry synced with where you are. No location, no app. That is the product. Apple wants the app to be “fully functional” without the one thing it needs to exist. That’s like rejecting a camera app because it doesn’t “fully function” with no camera permission.
What makes this worse is the complete lack of consistency. Every time I fix what they ask, the next review comes back with a different problem, instead of a clear list of issues to solve in one go. No stable checklist, no coherent interpretation, just moving goalposts and copy-paste template replies that ignore reviewer notes and how the app actually works.
They don’t seem to understand how incapable this process is for serious, niche apps. It’s not about quality or privacy at this point, it’s about box-ticking and cover-your-back behaviour. Meanwhile, small devs are supposed to burn weeks rewriting core flows just to satisfy someone who clearly hasn’t even tried to use the app properly.
I’ve decided to keep the app Android-only. iOS simply isn’t worth fighting with a review system that can’t even be consistent with its own guidelines.
Has anyone else had similar problems with Apple inventing a new issue every review instead of giving you one clear, stable set of requirements to fix?
Topic:
Developer Tools & Services
SubTopic:
General
Currently, if as a library author you are shipping dependencies as code, you can use the #if DEBUG preprocessor check to execute logic based on whether app is being built for Debug or Release.
My concern is more about the approach that should be taken when distributing frameworks/xcframeworks. One approach I am thinking of using is checking the presence of {CFBundleName}.debug.dylib in the main bundle. Is this approach reliable? Do you suggest any other approach?
Topic:
Developer Tools & Services
SubTopic:
General
Tags:
Swift Packages
Frameworks
Debugging
App Binary
Hello, I have a question about running tests on multiple simulators.
Currently, my company has a WDIO+Appium test suite with XCUITEST driver that runs on a single simulator through a mockttp proxy (we are intercepting and mocking some of the responses from our APIs and pass through the rest). In order to route the traffic we are currently using 'networksetup -setsecurewebproxy '. Everything works as expected.
With growing number of tests we'd like to scale number of simulators on a single host to 3-5. We have a working setup but the problem are system-wide proxy settings routing traffic from multiple simulators, which we can't distinguish by UDID or any other means, we know of. We can spin multiple mock servers on the same machine but we are struggling to find the way to route the traffic on a simulator basis.
In the end, both options are viable:
1 mock server running for multiple simulators
N number of mock servers for N number of simulators
Has anyone had the same/similar problem? How to approach this? We are currently running on Sequoia OSX and platform version 18.6. Thanks!
Just recently, any pkg file that I create with pkgbuild will install the Payload's application as a zero-byte file in the /Applications directory. This has been working for years without issue for me.
Here are the commands I am using with company specific items replaced:
pkgbuild --analyze --root MyApplicationRootDirectory standalone.plist
plutil -replace BundleIsRelocatable -bool NO standalone.plist
pkgbuild --identifier MyIdentifier --version 1.0 --install-location /Applications --root MyApplicationRootDirectory --component-plist standalone.plist --sign 'Developer ID Installer: MyCompany (MySignId)' --timestamp installer.pkg
Any ideas on what could be causing the issue?
I have verified the following:
The application being added to the pkg is both signed and notarized using the correct Developer ID Application certificate.
The resultant pkg file is both signed and notarized using the Developer ID Installer certificate.
Verified the pkg contents using "pkgutil --expand" to dump the contents.
Verified the pkg's Payload contents by extracting the data using "cat Payload | gunzip | cpio -1". This results in an application file that is a binary match for file added in the "pkgbuild --root" argument.
My application is the only file within the directory passed to the "pkgbuild --root" argument.
There are no warnings in the System Settings / Privacy & Security Panel when running the package installer.
I have a valid Mac Developer account.
I am building the application and the pkg file on the same computer.
Thank you for any insight.
Hi,
I accidentally upgraded my test device (iPhone 13 mini) to iOS 26. I really need to downgrade it to 18.7.X again. It seems this isn't possible since Apple doesn't sign the .ipsw anymore.
Is there really no way for a paying developer to downgrade her test devices?
(Please don't tell me to use the support forums, this is a concerning a developer test device)
Topic:
Developer Tools & Services
SubTopic:
General
I want to keep an eye on the App Store Connect release notes to find out when builds created with Xcode 26.2 RC will be accepted. I tried to add https://developer.apple.com/help/app-store-connect/release-notes/ to my RSS reeder but the items listed are not the same, it’s the items from the latest news from Apple Developer instead. Can we get an RSS feed please? Seems will be useful to monitor these release notes over time.
What is the recommended approach for distributing an XCFramework that uses common third-party dependencies (like Google Maps) when client apps may also use the same dependencies, resulting in duplicate symbol conflicts?
I'm developing a closed-source SDK distributed as an XCFramework. My SDK internally uses Google Maps for mapping functionality. However, when clients integrate my XCFramework into their apps that also use Google Maps, we encounter duplicate symbol errors.
What I've Tried:
Static vs Dynamic Linking: Both approaches result in conflicts
Static linking: Google Maps symbols compiled into my binary
Dynamic linking: GoogleMaps.framework bundled with my XCFramework
Build Configuration:
Set "Build Libraries for Distribution" = YES
Tried various linking strategies
Architecture Changes:
Used @implementation_only import
Wrapped code with #if canImport(GoogleMaps)
However, the dependencies still get linked at build time
Hi, I have an iOS project with the following app targets:
main iOS application
a notification service extension
5 static libs containing some swift files with public methods
1 dynamic framework with above static libs as dependencies.
The framework only contains 2 files - a default .h file and 1 .exp file. This exports file contains mangled-names of all the public methods that are exposed by the 5 static libs present as framework's dependencies. I obtained these symbols using the nm command for each static lib.
The main iOS app target has 2 dependencies - the framework and the notification extension.
The notification extension only depends on the framework.
This setup works perfectly fine. I wanted to understand:
If using the exports file is the only way to make this setup work?
If not, what else can I do?
What way does Apple recommend?
According to my requirements, I only need at-most 2-3 functions to be exposed by the framework - thus using a exports file just for that seems to bug me.
Thank you.
Hi,
We use Flat package installers (.pkg based installers) to install our applications on macOS. In macOS 26.1, installation is failing with the error
Unable to use PK session due to incompatible packages. Terminating. 2025-11-03 14:22:36+05:30 Admin-3 installer[1160]: Install failed: The Installer could not install the software because there was no software found to install.
Same installer package is working on macOS 26.
Any help is greatly appreciated.
Hi,
I am using Installer JS in Distrtibution file which is created using productbuild command. I am trying to read the installed version of app from the plist file present in the /var/db/receipts folder. It gives the following warning. If I enable the flag , notarization will fail.
FJS: Package Authoring Error: access to path "/var/db/receipts/com.xxx.xxx.plist" requires
Following is the function I have used to read the installed version.
system.files.plistAtPath()
I have also tried the following function to read the version from .app file.
system.files.bundleAtPath
Both the functions give the warning.
Is there are a way to avoid this warning or a better way to read the installed version?
Regards
Prema Kumar
I am a developer with a free developer account, and my account is under the legal age of majority. I know that, according to the terms in Section 6 of the Apple Developer Agreement, I must be the legal age of majority to use pre-release software, and yet the Software Update section of Settings on my device would allow me to install a beta release of iOS 26.
Is there a way for me to hide/remove this option without signing out of my account, and not have it appear again as an option until I reach the age of majority?
Topic:
Developer Tools & Services
SubTopic:
General
When I try to get a new API Key I get the following error.
"API Keys cannot be created due to an invalid Program License Agreement. Please update this agreement and try your request again."
I have been to the agreement section, and it says:
"Issued October 8, 2025. Accepted November 19, 2025."
Any idea why I still get this error??
Not sure if that makes a difference. I had a paid account, but I didn't renew it because I don't need it anymore, and I was told that I can still use this account for free for app testing.
Hi everyone,
after enabling CloudKit in my project, my app started showing conflicts between MusicKit and CloudKit entitlements — and now Xcode is failing to generate the provisioning profile entirely.
Current issue (Signing / Provisioning Profile Failure)
Xcode shows this error:
“Provisioning profile ‘iOS Team Provisioning Profile: team8.groovefy.dev’ doesn’t include the entitlements:
com.apple.developer.media-library,
com.apple.developer.music-user-token,
com.apple.developer.musickit,
com.apple.developer.playable-content,
com.apple.security.exception.mach-lookup.global-name”
Automatic signing fails, and Xcode cannot create or update the provisioning profile.
This started right after CloudKit was enabled in the project.
Context
Before enabling CloudKit, MusicKit worked normally, including Apple Music authentication and playlist creation.
After activating CloudKit capabilities:
MusicKit stopped generating the Apple Music user token
Playlist creation broke
Now the provisioning profile cannot be rebuilt because the required MusicKit-related entitlements are no longer included
Even after removing CloudKit entirely, the issue persists — as if the App ID or entitlements on the server side became inconsistent or corrupted.
I already tried:
Recreating App Identifier
Recreating provisioning profiles
Resetting capabilities
Cleaning and reinitializing the Xcode project settings
But Xcode still refuses to generate a valid provisioning profile that includes the MusicKit entitlements.
Summary
Enabling CloudKit caused MusicKit entitlements to collide, and now the provisioning profile no longer includes the required MusicKit entitlements — preventing the app from signing, running, or creating playlists.
If anyone has faced this type of entitlements/provisioning corruption or knows how to reset the App ID entitlements on Apple’s side, any help would be greatly appreciated.
I want to create a dynamic library for my iOS project, which would be loaded at runtime.
In Xcode, there are templates available for creating a static/dynamic lib for MacOS. But under the iOS tab, there is only a "static library" template.
So, I used the "static library" template and in its build settings I changed the Mach-O type to "dynamic library".
Now after building it, I use the file command on the generated file and it tells me it is a dynamic lib.
But the generated file still has .a extension, which is usually for static libs.
I'm aware we can tell Xcode in build settings to change the .a extension to something else, say .dylib but this seems like a hacky way to create a dynamic library.
What is the correct way?
I am aware that standalone dylibs are not supported on iOS, and we need to wrap them in a framework.
For my use case, the framework will literally be a wrapper, it won't have any source files of its own. It should only contain the dynamic lib generated from some independent codebase. I am not sure how to place the dylib in the framework.