In my app I have Local Push connectivity for local push notifications. My app has proper entitlment granted by Apple and NEAppPushProvider was working perfectly on older iOS versions before iOS26.
The problem I faced with iOS26: when i enable VPN - NEAppPushProvider stops with reason
/** @const NEProviderStopReasonNoNetworkAvailable There is no network connectivity. */
case noNetworkAvailable = 3.
But device is still connected to proper SSID that is included to matchSSIDs.
I discovered it only happens if my VPN config file include this line
redirect-gateway def1
without that line NEAppPushProvider works as expected with enabled VPN.
I use OpenVPN app.
Is it a bug of iOS26 or I need some additional setup?
Please help!
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
When previewing the recording of gameplay the buttons to exit or save are unclickable behind the top bar clock and Wi-Fi/5G status bar. Which means that you have to quit the game in order to continue.
Tested on multiple devices.
Does anyone have a solution to this? At the moment we have disabled it altogether for iOS 26 users.
We are experiencing an issue with the Agora integration in our app. The video/audio streaming works correctly when the app is run on a device connected via USB in release mode or installed via the Play Store (Android). However, when running through TestFlight or on the App Store version, the streaming does not function as expected.
We would greatly appreciate any guidance on whether this is related to App Store restrictions, permissions, or any specific configuration required for Agora to work in TestFlight and App Store builds.
Thank you for your time and support.
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight
I am running a Spatial Rendering App template demo, it shows “No People Found ” “There is no one nearby to share with”.
How can I stream videos rendered by Mac to my vision pro
I am using macOS 26.0, visionOS 26, Xcode 26
Topic:
Spatial Computing
SubTopic:
General
To establish a privileged helper daemon from a command line app to handle actions requiring root privileges I still use the old way of SMJobBless. But this is deprecated since OSX 10.13 and I want to finally update it to the new way using SMAppService.
As I'm concerned with securing it against malicious exploits, do you have a recommended up-to-date implementation in Objective-C establishing a privileged helper and verifying it is only used by my signed app?
I've seen the suggestion in the documentation to use SMAppService, but couldn't find a good implementation covering security aspects. My old implementation in brief is as follows:
bool runJobBless () {
// check if already installed
NSFileManager* filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath:@"/Library/PrivilegedHelperTools/com.company.Helper"] &&
[filemgr fileExistsAtPath:@"/Library/LaunchDaemons/com.company.Helper.plist"])
{
// check helper version to match the client
// ...
return true;
}
// create authorization reference
AuthorizationRef authRef;
OSStatus status = AuthorizationCreate (NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authRef);
if (status != errAuthorizationSuccess) return false;
// obtain rights to install privileged helper
AuthorizationItem authItem = { kSMRightBlessPrivilegedHelper, 0, NULL, 0 };
AuthorizationRights authRights = { 1, &authItem };
AuthorizationFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights;
status = AuthorizationCopyRights (authRef, &authRights, kAuthorizationEmptyEnvironment, flags, NULL);
if (status != errAuthorizationSuccess) return false;
// SMJobBless does it all: verify helper against app and vice-versa, place and load embedded launchd.plist in /Library/LaunchDaemons, place executable in /Library/PrivilegedHelperTools
CFErrorRef cfError;
if (!SMJobBless (kSMDomainSystemLaunchd, (CFStringRef)@"com.company.Helper", authRef, &cfError)) {
// check helper version to match the client
// ...
return true;
} else {
CFBridgingRelease (cfError);
return false;
}
}
void connectToHelper () {
// connect to helper via XPC
NSXPCConnection* c = [[NSXPCConnection alloc] initWithMachServiceName:@"com.company.Helper.mach" options:NSXPCConnectionPrivileged];
c.remoteObjectInterface = [NSXPCInterface interfaceWithProtocol:@protocol (SilentInstallHelperProtocol)];
[c resume];
// call function on helper and wait for completion
dispatch_semaphore_t semaphore = dispatch_semaphore_create (0);
[[c remoteObjectProxy] callFunction:^() {
dispatch_semaphore_signal (semaphore);
}];
dispatch_semaphore_wait (semaphore, dispatch_time (DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC));
dispatch_release (semaphore);
[c invalidate];
[c release];
}
Hello,
We’ve resumed the migration process after a break. Since my colleague is no longer with us, I had to go through the steps again myself.
As before, we’re trying to migrate "Sign In with Apple" users from tenant TENANT_A with client_id=CLIENT_ID_A to tenant TENANT_B with client_id=CLIENT_ID_B
I followed the procedure described here: [Apple Developer Documentation](https://developer.apple.com/documentation/technotes/tn3159-migrating-sign-in-with-apple-users-for-an-app-transfer – Migrating Sign In with Apple Users, essentially repeating what my coworker previously attempted in coordination with your employee Stephanie.
Here’s a summary of the steps and the issue we’re facing:
STEP 1 - get authcode for TEAM A
curl --location 'https://appleid.apple.com/auth/token'
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'grant_type=client_credentials'
--data-urlencode 'scope=user.migration'
--data-urlencode 'client_id=pl.CLIEND_ID_A'
--data-urlencode 'client_secret=<TEAM_A_SECRET>'
I receive response:
{
"access_token": "<ACCESS_TOKEN_TEAM_A>",
"token_type": "Bearer",
"expires_in": 3600
}
STEP 2 - get authcode for TEAB B
curl --location 'https://appleid.apple.com/auth/token'
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'grant_type=client_credentials'
--data-urlencode 'scope=user.migration'
--data-urlencode 'client_id=CLIENT_ID_B'
--data-urlencode 'client_secret=<TEAB_B_SECRET>'
I receive response:
{
"access_token":"<ACCESS_TOKEN_TEAB_B>",
"token_type": "Bearer",
"expires_in": 3600
}
STEP 3 - get transfer_sub from TEAM A
curl --location 'https://appleid.apple.com/auth/usermigrationinfo'
--header 'Authorization: Bearer <ACCESS_TOKEN_TEAM_A>'
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'client_id=CLIENT_ID_A'
--data-urlencode 'client_secret=<TEAM_A_SECRET>'
--data-urlencode 'sub=USER_SUB_FROM_TEAM_A'
--data-urlencode 'target=TENANT_B'
I receive response:
{
"transfer_sub": "USER_SUB_FROM_TEAM_B"
}
STEP 4 - Team B exchanges transfer identifers
curl --location 'https://appleid.apple.com/auth/usermigrationinfo'
--header 'Authorization: Bearer <ACCESS_TOKEN_TEAM_B'
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'client_id=CLIENT_ID_B'
--data-urlencode 'client_secret=<TEAM_B_SECRET>'
I receive response:
{
"error": "invalid_request"
}
We’ve created a new client_id under tenant B and want to migrate users there. However, we skipped the step described in Step 3 of the documentation(https://developer.apple.com/documentation/technotes/tn3159-migrating-sign-in-with-apple-users-for-an-app-transfer#3-Team-A-initiates-app-transfer-to-Team-B), which involves initiating an app transfer. The reason is that this client_id is used solely for web authentication, not for a mobile app, so we don’t have an app to transfer.
Based on our analysis and your documentation, it seems this flow only works if the client_id matches across both tenants, which can only be achieved through an app transfer, something we cannot proceed with.
Apple previously insisted that we migrate these users, but as shown above, we’re stuck. Is there any alternative flow available, or can you assist us in completing this migration?
Topic:
Privacy & Security
SubTopic:
Sign in with Apple
Hello Apple Developer Support,
I am facing an issue when attempting to use the App Store Connect API with my API key. While basic access (e.g., /v1/apps) works correctly, any requests related to Certificates, Identifiers & Profiles (CIP) are failing with a 403 Forbidden error.
Here are the details of the request and validation results:
JWT Details:
{
"header": {
"alg": "ES256",
"kid": "2XLW343BLM",
"typ": "JWT"
},
"payload": {
"iss": "9cf6159c-e038-4703-b542-7652242a6dbf",
"iat": 1757515277,
"exp": 1757516357,
"aud": "appstoreconnect-v1"
}
}
Test Results:
✅ /v1/apps?limit=1 → Status: 200 (working)
❌ /v1/bundleIds?limit=1 → Status: 403
Error: Unable to find a team with the given Content Provider ID 9cf6159c-e038-4703-b542-7652242a6dbf to which you belong.
❌ /v1/certificates?limit=1 → Status: 403
Error: This request is forbidden for security reasons.
❌ /v1/profiles?limit=1 → Status: 403
Error: Unable to find a team with the given Content Provider ID.
I have already confirmed that:
All API keys were generated correctly.
All required roles and permissions have been assigned in App Store Connect.
It seems that while public access endpoints are functioning, the CIP endpoints are blocked for my account/key.
Could you please advise:
Why the given Content Provider ID is not being recognized?
Whether additional permissions, roles, or configuration are required to enable access to Certificates, Identifiers, and Profiles through the API?
If it is possible to reset or refresh my membership/team configuration so that I can successfully access the App Store Connect API endpoints for CIP.
Thank you for your support and guidance.
Best regards
The developer tutorial for visual intelligence indicates that the method to detect and handle taps on a displayed entity from the Search section is via an "OpenIntent" associated with your entity.
However, running this intent executes code from within my app. If I have the perform() method display UI, it always displays UI from within my app.
I noticed that the Google app's integration to visual intelligence has a different behavior-- tapping on an entity does not take you to the Google app -- instead, a Webview is presented sheet-style WITHIN the Visual Intelligence environment (see below)
How is that accomplished?
Topic:
Machine Learning & AI
SubTopic:
Apple Intelligence
i'm integrating In-App Purchases in our Flutter app using the official in_app_purchase plugin. We are currently testing consumable purchases and facing issues with the way events are delivered from StoreKit to the app.
Implementation details
I initiate the purchase with:
await InAppPurchase.instance.buyConsumable(purchaseParam: purchaseParam);
I listen for purchase updates with:
final Stream<List> purchaseUpdated = inAppPurchase.purchaseStream;
_subscription = purchaseUpdated.listen((purchaseDetailsList) {
_handlePurchaseUpdates(purchaseDetailsList);
}, onError: (Object error) {
updateApplePaymentStatus(isSuccess: false, response: jsonEncode(error.toString()));
}, onDone: () {
_subscription.cancel();
});
Issues Observed
Control on purchase button event
As soon as the user taps the purchase button, the App Store purchase sheet is shown.
Question: Is there a way to intercept control at this point (before showing the sheet) to perform additional checks or logging?
Cancelled payment after UPI intent
In our testing with UPI payment flows (UPI intent triggered from Apple Pay/linked payment method), if the user cancels the payment from the external flow, we don’t see a clear event in purchaseStream.
Question: How can we reliably capture this cancellation status on the app side?
Event timing after successful purchase
Currently, the purchaseStream event is only triggered after the StoreKit purchase confirmation popup has been dismissed by the user.
Question: Is there a way to capture the event earlier (i.e., right after StoreKit confirms payment success), so we can update our backend and UI without waiting for popup dismissal?
Request
We would appreciate guidance on:
Best practices for intercepting purchase initiation before the StoreKit sheet.
Recommended way to detect and handle cancelled payments (especially in UPI flows) managed on frondend side.
Whether it is possible to receive successful purchase events without waiting for the user to dismiss the confirmation dialog.
Thank you for your support.
We need a live activity to countdown our time in formats like 2h 30m -> 2h 29m -> 2h 28m etc
58m -> 57m
I see this kind in pictures in official documentation.
to make a functional timer is:
Text(context.state.startTime, style: .timer)
But it's very limited when it comes to formatting.
This timer .relative includes seconds which we don't want
Text(futureDate, style: .relative)
Also format we need is h instead of hour, m instead of min
Topic:
App & System Services
SubTopic:
Widgets & Live Activities
Hello,
I am a developer planning to build an application using Apple's new SpeechTranscriber technology.
I am facing an issue where SpeechTranscriber is not available on my iPad Pro (11-inch, 2nd generation, model number: MXDC2J/A), even though I have updated it to iPadOS 26. I was under the impression that SpeechTranscriber would be available on any device running iPadOS 26. Could you please clarify if this is incorrect?
Furthermore, I am planning to purchase a new iPad with an A16 chip for the development and deployment of this application. Can you confirm if SpeechTranscriber will be fully functional on an iPad equipped with the A16 chip?
Thank you for your assistance.
Developer Mode option is not visible in Privacy & Security section.
Always invisible in Privacy & Security section after iOS 18.6 upgrade. I have done the reset iPhone and clear data many times but same issue i am getting in iOS device.
Note* - When we plug the iPhone in Mac system using wire i did receive the message like - 'Trust the system'.
How to show the developer mode option in iOS device?
Kindly suggest.
I've been trying to add a CoreSpotlight indexer to my macOS application. The new template for the indexer uses the new appex CSImportExtension style importer.
I've been following this ->
https://developer.apple.com/documentation/corespotlight/csimportextension
I changed the CSSupportedContentTypes in the Info.plist file to the correct file type uti.
I added a dummy value into the attributes (see code below) - just setting contentDescription to 'noodle' (easy to search for)
class ImportExtension: CSImportExtension {
override func update(_ attributes: CSSearchableItemAttributeSet, forFileAt: URL) throws {
// Add a dummy value, and see whether spotlight finds it
attributes.contentDescription = "noodle"
}
}
I have a number of files on disk that match the uti (and can be found when I search by the file name)
Yet, when I build and run my app, the a spotlight search for 'noodle' finds no results.
Can anyone give me any advice? I cannot find any indication that the ImportExtension is called (although when I put a log message at the start of the update() call there's no message in the console which seems to suggest it's not being called).
Is there any way of debugging this?
Cheers and thanks -- Darren.
I just launched my app Stonk on the App Store and spent $100 on ads but haven’t seen any downloads. I’m curious if others rely on the same strategies or if bigger ad budgets work better. Marketing has been challenging, so I’d appreciate advice on how to advertise more effectively.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
App Store
App Review
App Store Connect
I implemented an EntityAction to change the baseColor tint - and had it working on VisionOS 2.x.
import RealityKit
import UIKit
typealias Float4 = SIMD4<Float>
extension UIColor {
var float4: Float4 {
if
cgColor.numberOfComponents == 4,
let c = cgColor.components
{
Float4(Float(c[0]), Float(c[1]), Float(c[2]), Float(c[3]))
} else {
Float4()
}
}
}
struct ColourAction: EntityAction {
// MARK: - PUBLIC PROPERTIES
let startColour: Float4
let targetColour: Float4
// MARK: - PUBLIC COMPUTED PROPERTIES
var animatedValueType: (any AnimatableData.Type)? { Float4.self }
// MARK: - INITIATION
init(startColour: UIColor, targetColour: UIColor) {
self.startColour = startColour.float4
self.targetColour = targetColour.float4
}
// MARK: - PUBLIC STATIC FUNCTIONS
@MainActor static func registerEntityAction() {
ColourAction.subscribe(to: .updated) { event in
guard let animationState = event.animationState else { return }
let interpolatedColour = event.action.startColour.mixedWith(event.action.targetColour, by: Float(animationState.normalizedTime))
animationState.storeAnimatedValue(interpolatedColour)
}
}
}
extension Entity {
// MARK: - PUBLIC FUNCTIONS
func changeColourTo(_ targetColour: UIColor, duration: Double) {
guard
let modelComponent = components[ModelComponent.self],
let material = modelComponent.materials.first as? PhysicallyBasedMaterial
else {
return
}
let colourAction = ColourAction(startColour: material.baseColor.tint, targetColour: targetColour)
if let colourAnimation = try? AnimationResource.makeActionAnimation(for: colourAction, duration: duration, bindTarget: .material(0).baseColorTint) {
playAnimation(colourAnimation)
}
}
}
This doesn't work in VisionOS 26. My current fix is to directly set the material base colour - but this feels like the wrong approach:
@MainActor static func registerEntityAction() {
ColourAction.subscribe(to: .updated) { event in
guard
let animationState = event.animationState,
let entity = event.targetEntity,
let modelComponent = entity.components[ModelComponent.self],
var material = modelComponent.materials.first as? PhysicallyBasedMaterial
else { return }
let interpolatedColour = event.action.startColour.mixedWith(event.action.targetColour, by: Float(animationState.normalizedTime))
material.baseColor.tint = UIColor(interpolatedColour)
entity.components[ModelComponent.self]?.materials[0] = material
animationState.storeAnimatedValue(interpolatedColour)
}
}
So before I raise this as a bug, was I doing anything wrong in the former version and got lucky? Is there a better approach?
Hello!
When launching/debugging on my iPad and iPhone I keep getting the following error:
“Previous preparation error: Failed to find a DDI … Run ‘devicectl list preferredDDI’ …”
I believe this was caused by a previously interrupted Xcode update around June due to low disk space, which may have left DeviceSupport/DDI/CoreDevice files incomplete. Even after finishing the update later, the error persists. I now use a new Mac with 4 TB of storage, but the issue still occurs.
Since then I have unfortunately been blocked from testing or presenting my app on devices. It seems that only a new, fully completed Xcode update might resolve the problem.
Tried so far:
– Cleared caches (CoreDevice/Devices)
– Reset trust on device and re-paired
– Checked devicectl list preferredDDI
I would really appreciate guidance, as at the moment I cannot present my app due to this blocking issue.
Thank you very much for your support!
Topic:
Developer Tools & Services
SubTopic:
Xcode
Hi everyone,
so I have a widget that is loading and showing images.
When changing my icons and widget to transparent or tinted on iOS 26 they just turn white or the tint color.
How can I mark images to preserve their appearance aka color?
The Fotos widget has (long press and its configuration) and option to tint them or preserve the color. I just can't figure out how it's done and what API to use.
Second, is there an API to learn which mode is currently being used to tweak other elements of the UI?
Thanks for any advice.
A is there a way to get big huge notitifications for Shareplay invitations ?
B can i have the notifications inside the app ?
we have a corporate app to check archtecture projects
we want to share these 3d spaces walking inside with near users in the same place to discuss about the project
.. but it takes too long
shareplay invitation is a small circle on top, if the others users just put the vision without configuring eyes and hands... it's gonna be impossible
thanks for sharing and giving us support
Is there a way to access an Icon Composer .icon file in Swift or Objective-C? Any way to get this in an NSImage object that I can display in an image view? Thanks.
Hello Apple Developer Community,
I’m facing an issue when submitting my iOS app to App Store Connect.
ITMS-90429: Invalid Swift Support libswiftDarwin.dylib, libswiftMetal.dylib, libswiftCoreAudio.dylib, libswiftsimd.dylib, libswiftQuartzCore.dylib, libswiftos.dylib, libswiftObjectiveC.dylib, libswiftDispatch.dylib, libswiftCoreGraphics.dylib, libswiftCoreFoundation.dylib, libswiftUIKit.dylib, libswiftCoreMedia.dylib, libswiftCore.dylib, libswiftFoundation.dylib, libswiftCoreImage.dylib aren’t at the expected location: /Payload/Runner.app/Frameworks. Move the file to the expected location, rebuild your app using the current public (GM) version of Xcode, and resubmit it.
My setup:
Using Flutter for iOS development
Flutter version: 3.32.8
Xcode version: Version 16.3
What I have tried so far:
Cleaned build folder: flutter clean
Upgraded Flutter and CocoaPods to the latest version.
Rebuilt the project using latest Xcode GM version.
Verified that Always Embed Swift Standard Libraries is set to YES in Xcode.
Reinstalled pods and ensured use_frameworks! is correctly set in Podfile.
Despite this, I still get the same error.
My questions:
What is the correct way to ensure the Swift libraries are embedded in the correct location for Flutter apps?
Is there any known issue when building with Flutter and integrating static .a libraries that could cause this problem?
Has anyone successfully submitted a Flutter iOS app with external static libraries linked and avoided this error?
Are there any manual steps required to fix the location of Swift dylibs during the build process?
Thank you in advance for your help!
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight