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.
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
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.
Tech stack: React Native + Expo. We are using two solo developer accounts (not a business or team account).
Context: Friend and I set out to make an app together. Friend created app and set it up on Apple.
We worked on it together. He controlled devops (builds and submission).
Friend no longer can commit to development.
Wants to transfer to me. I create apple developer account.
After app transfer, my phone (deviceid) underwent a 14 day soft ban preventing builds. That has since been lifted.
There seems to be something in place preventing me from making dev builds on the original dev bundleid. It says it's still owned by him despite the app transfer.
Bottom line: what needs to happen so 1 can make dev builds?
nice to have: is there a way for us to both make dev builds under the same bundleid?
Tech stack: React Native + Expo. We are using two solo developer accounts (not a business or team account).
Context: Friend and I set out to make an app together. Friend created app and set it up on Apple.
We worked on it together. He controlled devops (builds and submission).
Friend no longer can commit to development.
Wants to transfer to me. I create apple developer account.
After app transfer, my phone (deviceid) underwent a 14 day soft ban preventing builds. That has since been lifted.
There seems to be something in place preventing me from making dev builds on the original dev bundleid. It says it's still owned by him despite the app transfer.
Bottom line: what needs to happen so I can make dev builds?
Nice to have: we can both make dev builds under the same bundleid
We're having issues getting Sign in with Google to function on TestFlight (not experiencing these issues on iOS Browser) with user unable to be authorised and proceed to logged in screens of our app.
Below are the three sign-in methods tested and the exact results for each.
Button 1: Default
Standard Google Sign-In button (Google JavaScript SDK) embedded in the frontend.
Uses the normal OAuth browser redirect flow.
Auth URL: https://accounts.google.com/o/oauth2/v2/auth?...
Sometimes disallowed_useragent error.
Other times a 400 invalid_request error.
In most cases the callback is never triggered inside the wrapper.
Appears that the wrapper does not retain cookies/session data from the external Google window.
Button 2: Custom
Custom button calling Google OAuth through our own redirect handler.
Explicitly set a custom user-agent to bypass disallowed user agent logic.
Later removed user-agent override entirely for testing.
Added multiple ATS (App Transport Security) exceptions for Google domains.
Added custom URL scheme to Info.plist for OAuth redirect.
Changing the user-agent had no effect.
ATS exceptions + scheme support verified and working.
Redirect still fails to propagate tokens back to the WebView.
In tests a few weeks ago we got to Google’s login page, but it never returned to the app with a valid code. Now
we are consistently getting disallowed_useragent error.
Button 3: Default
Same as Button 1 however tested outside of Vue.js with just plain JavaScript.
Added new Google domain exceptions and updated redirect URIs.
Behaviour matches Button 1
Google account selection sometimes worked, however now consitently disallowed_useragent error
Additional Technical Attempts
User-Agent Modifications
Set UA to standard desktop Chrome → no effect.
Removed UA override → no effect.
ATS / Domain / Scheme Configuration
Added:
accounts.google.com
.googleusercontent.com
*.googleapis.com
How can I allow the popup I am encountering while I run my UI tests with video recording in the Github actions.
Since these tests are running on VMs, it's not possible to manually click Allow. Also the remote robot cannot interact with OS-level dialogs.