iOS is the operating system for iPhone.

Posts under iOS tag

200 Posts

Post

Replies

Boosts

Views

Activity

Clarification on BGTaskScheduler.submitTaskRequest(_:completionHandler:) main-thread warning
I’m looking at the new BGTaskScheduler.submitTaskRequest(_:completionHandler:) API on iOS 27 that replaces the now deprecated submit(_:).* The documentation says: This method asynchronously submits the task request and invokes the completion handler with any errors that occur during submission. It also says: The completion handler may be invoked on a arbitrary queue after an arbitrary amount of delay. Do not call this method from the main thread or performance-critical contexts. I’m confused when it says “Do not call this method from the main thread.” Since the method asynchronously submits the request and reports errors later through the completion handler, I initially read this as a warning not to wait for the completion handler to be called assuming it returns quickly. But it specifically says not to call the method from the main thread, which suggests the initial call itself may perform blocking expensive work before returning (although this is confusingly stated in the same block describing the completion handler behavior). Is the intended usage to create/configure the request on the main thread, then dispatch only submitTaskRequest to a background queue, or is calling that on the main thread actually okay just like the submit(_:) API it replaced? My current code in a synchronous function running on the main thread: BGTaskScheduler.shared.register(forTaskWithIdentifier: id, using: .main) { @Sendable registeredTask in // The background continued processing task has started, use it to update progress... } let request = BGContinuedProcessingTaskRequest(identifier: id, title: title, subtitle: subtitle) request.strategy = .fail // Start the task immediately and fail if it cannot if BGTaskScheduler.supportedResources.contains(.gpu) { request.requiredResources = .gpu } do { try BGTaskScheduler.shared.submit(request) // FIXME: How to migrate to the new API? } catch { // No worries, user will just have to keep the app open until the task completes print("BGTaskScheduler request failed: \(error.localizedDescription)") } *I assume this change was made to address issues like FB21052216 (https://developer.apple.com/forums/thread/807370)
3
0
175
1w
BGContinuedProcessingTask register block not called, submit does not throw an error
I implemented BGContinuedProcessingTask in my app and it seems to be working well for everyone except one user (so far) who has reached out to report nothing happens when they tap the Start Processing button. They have an iPhone 12 Pro Max running iOS 26.1. Restarting iPhone does not fix it. When they turn off the background processing feature in the app, it works. In that case my code directly calls the function to start processing instead of waiting for it to be invoked in the register block (or submit catch block). Is this a bug that's possible to occur, maybe device specific? Or have I done something wrong in the implementation? func startProcessingTapped(_ sender: UIButton) { if isBackgroundProcessingEnabled { startBackgroundContinuedProcessing() } else { startProcessing(backgroundTask: nil) } } func startBackgroundContinuedProcessing() { BGTaskScheduler.shared.register(forTaskWithIdentifier: taskIdentifier, using: .main) { @Sendable [weak self] task in guard self != nil else { return } startProcessing(backgroundTask: task as? BGContinuedProcessingTask) } let request = BGContinuedProcessingTaskRequest(identifier: taskIdentifier, title: title, subtitle: subtitle) request.strategy = .fail if BGTaskScheduler.supportedResources.contains(.gpu) { request.requiredResources = .gpu } do { try BGTaskScheduler.shared.submit(request) } catch { startProcessing(backgroundTask: nil) } } func startProcessing(backgroundTask: BGContinuedProcessingTask?) { // FIXME: Never called for this user when isBackgroundProcessingEnabled is true }
11
0
944
1w
iOS 27 terminates a running app while MDM converts it to a managed app
We're working on an iOS app distributed through the App Store and installed on an MDM-enrolled device. Our MDM server uses InstallApplication to take management of the already-installed and running app. On iOS 27 betas 3 and 4, processing this command causes iOS to terminate the app and its extensions with SIGKILL. The same flow and MDM payload work without terminating the app on earlier iOS versions (iOS <=26). Environment OS: iOS 27 betas 3 and 4 Does not happen: iOS 26 or iOS 16.7.15 Device: iPhone SE 2nd Gen Enrollment: MDM-enrolled device Distribution: App Store app App state: Already installed and running when management is requested MDM command: InstallApplication Minimal MDM command The MDM server sends an InstallApplication command for the already-installed app: Attributes = { Removable = false; }; ChangeManagementState = Managed; Identifier = "APP_BUNDLE_ID"; InstallAsManaged = true; ManagementFlags = 1; RequestType = InstallApplication; We also tested the equivalent command using iTunesStoreID = APP_STORE_ID instead of Identifier, and removing InstallAsManaged. The targeted running app was terminated in the same way. Steps to reproduce Install and launch the App Store app as an unmanaged app. Enroll the iPhone in MDM. While the app is running, send the MDM InstallApplication command to take management of the existing installation. Observe the unified logs for mdmd, appstored, manageddeviced, installcoordinationd, and runningboardd. The issue can also be reproduced by initiating the same server-side flow while the app is already in the background. iOS 27 log sequence The command is accepted and appstored starts the managed-app tasks. manageddeviced then attempts to mark the app as managed using a null persona (this differs from iOS <26): The running app has a valid persona. After the failed mapping, installcoordinationd explicitly asks RunningBoard to terminate the app to disassociate that persona: After termination, removing the valid persona also fails. The managed-app task later reports success despite the mapping failures and termination. Earlier iOS comparison As an example, on iOS 16.7.15, using the same MDM command, **iOS routes the request through dmd with persona: default. The app remains alive and receives managed-app change notifications. Expected The existing installation becomes managed without terminating the running app, consistent with the behavior on earlier iOS versions. Actual manageddeviced tries to associate the app with persona (null) and fails with MIInstallerErrorDomain Code 191. That failure causes installcoordinationd to request termination of the app and its extensions to disassociate their valid persona. runningboardd terminates them with SIGKILL (isUserKill=0). The subsequent removal of the only valid persona fails with Code 242, although the managed-app task later reports success. Documentation checked The payload follows the documented InstallApplication flow for taking management of an existing app: Apple Docs WWDC26 app MDM updates We have not found a malformed field that explains the iOS 27-only failure. More info Detailed logs and additional info can be found on the Feedback report.
4
5
2.4k
1w
Verifying TLS 1.3 early_data behavior on iOS 26
Development environment Xcode 26.0 Beta 6 iOS 26 Simulator macOS 15.6.1 To verify TLS 1.3 session resumption behavior in URLSession, I configured URLSessionConfiguration as follows and sent an HTTP GET request: let config = URLSessionConfiguration.ephemeral config.tlsMinimumSupportedProtocolVersion = .TLSv13 config.tlsMaximumSupportedProtocolVersion = .TLSv13 config.httpMaximumConnectionsPerHost = 1 config.httpAdditionalHeaders = ["Connection": "close"] config.enablesEarlyData = true let session = URLSession(configuration: config, delegate: nil, delegateQueue: nil) let url = URL(string: "https://www.google.com")! var request = URLRequest(url: url) request.assumesHTTP3Capable = true request.httpMethod = "GET" let task = session.dataTask(with: request) { data, response, error in if let error = error { print("Error during URLSession data task: \(error)") return } if let data = data, let responseString = String(data: data, encoding: .utf8) { print("Received data via URLSession: \(responseString)") } else { print("No data received or data is not UTF-8 encoded") } } task.resume() However, after capturing the packets, I found that the ClientHello packet did not include the early_data extension. It seems that enablesEarlyData on URLSessionConfiguration is not being applied. How can I make this work properly?
2
0
398
1w
Unable to attach first auto-renewable subscription to iOS app.
Hello everyone. I’m trying to submit my first auto-renewable subscription with my iOS app, but can’t associate the subscription with my app version in App Store Connect. Setup: app version 1.0.7 with build attached, subscription group “Premium” with weekly, monthly, yearly. All metadata complete; paid apps agreement active, bank details set, admin access confirmed. Problem: “In-App Purchases and Subscriptions” section is missing on my app version page, so I can’t attach my subscription. Draft error says, “Unable to submit for review. Add an app version for the selected platform.” The draft only lists my weekly plan, not the app version. Questions: why might that section be missing? Are there prerequisites? Has anyone seen this? Any guidance or suggestions would be greatly appreciated.
2
1
290
1w
Public API to overlay or hide the system keyboard while preserving its exact state?
I am building an iOS text composer with an attachment panel. When its UITextField is first responder and the system keyboard is visible, tapping the attachment button should present a panel that can extend into the region occupied by the keyboard. When the panel closes, the user should return to the same keyboard state without a visible dismissal and re-presentation. The required continuity is: The same UITextField remains first responder. The active input mode remains alphabet, 123, or Emoji. Emoji preserves its selected category, search state, and scroll position. The composer remains positioned above the keyboard throughout the transition. I have investigated the public UIKit approaches: A normal app-window overlay cannot render above the remotely hosted system keyboard. inputAccessoryView remains in the accessory region and cannot cover the keycaps. Resigning first responder visibly dismisses the keyboard and loses continuity. Assigning a custom inputView to the same UITextField and calling reloadInputViews() publicly replaces the keyboard. However, restoring inputView to nil reconstructs the system keyboard and does not preserve the exact Emoji or keyplane state. UIKeyboardLayoutGuide provides geometry but no presentation control. Is there a supported public API or recommended architecture that allows an app to: Temporarily obscure or visually hide the system keyboard while keeping it active and preserving its state? Present app-owned content in a layer above the keyboard keycaps? Temporarily replace the keyboard and restore the same mode, Emoji category, and scroll position? If these are unsupported, what is Apple's recommended way to create an attachment panel that visually occupies the keyboard region while maintaining input continuity? This occurs on iOS 26.x in Simulator and on a physical iPhone using a UIKit-backed text field inside a SwiftUI interface. I am specifically looking for a public API solution and do not want to access private keyboard windows or views.
0
0
110
1w
India Post tracking numbers are incorrectly detected as DTDC shipments in Messages App
Device: iPhone 17 iOS Version: Latest public release Steps to Reproduce: Receive an SMS from India Post containing a tracking number (e.g. EU714545174IN). Long-press the tracking number. Select Track Shipment. Expected Result: The shipment should be tracked using India Post or the correct carrier. Actual Result: iOS opens an in-app Safari page for DTDC with an invalid tracking URL. The shipment cannot be tracked because the tracking number belongs to India Post, not DTDC. Additional Information: Tapping the India Post website link in the SMS works correctly. Only the built-in Track Shipment action misidentifies the carrier.
0
0
115
1w
Push notification not send due to netowrk related errors
Beginning July 29, 2026, we observe communication erros while sending push notifications to https://api.push.apple.com like: Error in the HTTP2 framing layer Send failure: Connection reset by peer Also we ran tcpdump which clearly indicates that TCP RESET packets are coming from various APNS IP like 17.188.x.x. Errors mostly occure during traffic peak but also outside. We also did a test from different datacenter in other country and which resulted a same issue
0
1
373
1w
Builds not syncing. Various resasons. Unknown
I sent it for testing from the Choicely app. I have entered the downloaded key, opened it in Notepad, and pasted the long key; my team and distributor are right. But it seems like Apple always mentions build 1.0.2 (7) when I am actually sending (8). It'll say failed, then suddenly say ready to submit for review. So I will, and I'm waiting for review... then I get a red failed sometime later saying either certificates are not included ( I don't get all that... I'm using Windows, so I can't make them like they say I need to, and sometimes it says invalid binary...although if I look at app info and details... it says binary validated. It will make it to just before TestFlight sometimes, and sometimes it passes TestFlight... also it will say app synced successfully but failed to collect metadata. So many oddities... I don't know what to do!!
1
0
386
1w
ExternalPurchaseCustomLink.isEligible is false on German storefront despite valid EU entitlement
We are implementing StoreKit External Purchase Link for an iOS app distributed in the European Union and are trying to determine whether we are missing a configuration step or encountering a StoreKit server-side eligibility issue. The failure is reproducible in a focused native Swift Xcode project that directly calls StoreKit: let eligible = await ExternalPurchaseCustomLink.isEligible The sample contains no Flutter code, PayPal SDK, networking, or application business logic. Configuration we have verified: The Account Holder accepted the StoreKit External Purchase Link Entitlement Addendum for EU Apps. StoreKit External Purchase Link is enabled and shown as Assigned for the App ID. The regenerated Development provisioning profile contains com.apple.developer.storekit.external-purchase-link = true. The installed app's signed entitlements contain the same value. The application-identifier and team-identifier match the intended App ID and team. The compiled Info.plist contains SKExternalPurchaseCustomLinkRegions with all 27 lowercase EU region codes, including "de". Germany is available for the app in App Store Connect. No local StoreKit Configuration file is enabled. Test environment: Physical iPhone running iOS 26.5.2 (23F84) Xcode 26.6 (17F113) Real German Media & Purchases Apple Account German Sandbox Apple Account StoreKit 2 storefront ID 143443, country code DEU StoreKit 1 also reports country code DEU AppStore.canMakePayments = true AppTransaction verifies in the Sandbox environment Clean build and reinstall using the regenerated Development profile Observed result: ExternalPurchaseCustomLink.isEligible = false For diagnostic purposes only, after observing false eligibility, we also requested both token types: ACQUISITION: StoreKitError.notAvailableInStorefront SERVICES: StoreKitError.notAvailableInStorefront A delayed recheck still reports storefront DEU and isEligible=false. Our production flow does not request tokens unless eligibility is true. We found the similar thread "Unable to enable eligibility for External Purchase Link APIs" (https://developer.apple.com/forums/thread/808349). In that case, the production Media & Purchases account had an unsupported storefront. In our case, both the real Media & Purchases account and the Sandbox account are German, and StoreKit itself reports DEU. We also found "External Purchase in Japan" (https://developer.apple.com/forums/thread/822618), where an Apple App Store Commerce Engineer requested a Feedback Assistant report with a sysdiagnose and screen recording for isEligible=false. Questions: Should ExternalPurchaseCustomLink.isEligible return true in a developer-signed Sandbox build when the entitlement, compiled Info.plist, German storefront, and account conditions are all satisfied, or is TestFlight/App Store approval required? Is there any additional App Store Connect storefront election, entitlement approval, or server-side activation step required beyond the EU addendum, Assigned capability, signed entitlement, and SKExternalPurchaseCustomLinkRegions? If this configuration is complete, could Apple verify whether eligibility has not propagated correctly for the German Development/StoreKit Sandbox environment, and which diagnostics should be included in a Feedback Assistant report? We have also opened a code-level support request and prepared a minimal native Swift reproduction project. Any guidance from StoreKit engineering would be appreciated.
0
0
168
1w
iOS 27 Beta - Multiple Critical Issues (Bluetooth, Networking, Feedback Assistant Error)
Device: iPhone 17 Pro iOS Version: iOS 27 beta Problem Description I am experiencing the following issues on iOS 27 Beta: Bluetooth randomly turns off and on automatically • Bluetooth occasionally turns off by itself for a few seconds and then turns back on. • The issue is especially severe when connected to AirPods Pro 2 (latest beta firmware), but it also occurs even without AirPods connected. • It usually only starts happening frequently after the iPhone has been powered on for a long time. Restarting the device temporarily resolves it. 2. Network Connection Issues • Network frequently experiences lag and slow speeds. • The problem becomes particularly noticeable when cellular data is throttled to 1 Mbps. • Even when multiple strong Wi-Fi signals are available, the device often ignores them and continues using or automatically switches back to cellular data (relatively frequent intermittent issue). 3. Feedback Assistant completely broken • Trying to submit feedback through the Feedback Assistant app delay fails with the following error: 开始反馈时出错 请稍后再试。
1
2
630
1w
App Review Issue
It has been approximately three weeks since we submitted our app for review via App Store Connect, but it remains "In Review" and the review process has not been completed. For this reason, we also requested an expedited app review to the App Review Team last week. Will the review proceed if we simply wait? Is there any way to check the detailed status of this app review?
9
3
930
1w
TestFlight iOS app crashes immediately on launch, but build uploads successfully
Our iOS app uploads successfully to App Store Connect and appears in TestFlight, but it crashes immediately on launch. App name: Axioma Pay Bundle ID: uk.co.axiomapay.app Distribution: TestFlight Framework: Expo / React Native Device tested: iPad via TestFlight The app installs, the icon appears, but tapping Open causes an immediate crash. One earlier build displayed this runtime message: Cannot read property 'ErrorBoundary' of undefined Crash logs show the app aborting on the React Native ExceptionsManagerQueue with SIGABRT / EXC_CRASH. We do not currently have a focused minimal Xcode sample project because this is an Expo/EAS React Native production build. We can provide .ips crash logs and App Store Connect/TestFlight build details. Can Apple help confirm whether this crash appears to be caused by: App Store/TestFlight processing, provisioning/signing/entitlements, an iOS runtime issue, or an app-side React Native JavaScript startup exception? Latest TestFlight build crashes immediately after launch.
1
0
387
1w
Apple Pencil Pairing Issues
Is anybody else having a probelm pairing an Apple Pencil. I insert it into my new 2gen iPad Pro 12.9 and it briefly shows the dialog to Pair and then shows it connected, but then disconnects, and then I get an Error that the Pencil took to long to pair. Then it doesn't work.Am I alone in having this issue.Thanks,Nick
31
0
51k
1w
ACSP exam from Russia — looking for advice
Hello everyone, I’m Anton, 16 years old, from Russia. I’m already registered in the Apple Certification Records System with Candidate ID APPL475224, and I want to take the ACSP exam. I’m not a programmer — I’m deeply into Apple devices: iPhone, iPad, Mac, Apple Watch, and know iOS/macOS well. I’ve already contacted Apple Support and got Case ID 21352800. Now I’m looking for practical advice from people who’ve been through this: Is the ACSP exam fully available in Russian? How do you actually pay for the exam from Russia these days? Any materials you’d recommend? I’m not a developer — I’m a support specialist. I want to be certified so I can help people here in Russia. Not for money — just so people can trust that I know what I’m talking about. Thanks in advance!
0
0
534
1w
iOS version of my app got stuck in "Waiting for review" the macOS version was already approved
Hi everyone, I submitted a universal app earlier this week on Monday at 12:00 AM. The macOS version went through the queue smoothly and was approved within 2 days. However, the iOS version is still stuck in the "Waiting for Review" stage. It hasn't even changed to "In Review" yet, and it has now been over 5 days. A few details about the app: It has no login or account requirements. It doesn't rely on any external dependencies. Has anyone else experienced severe iOS queue delays this week? Is it normal for the iOS queue to be this backed up while the Mac queue flies by? I haven't sent a formal inquiry to the App Review team yet because the contact page wording was a bit confusing, so I wanted to check here first to see if this is a widespread queue backlog or if I should just keep waiting over the weekend. Thanks!
0
0
203
1w
PHAssetChangeRequest deleteAssets completionHandler for recently captured 48MP DNG sometimes never called
I want to report a issue on PHAssetChangeRequest.deleteAssets Environment iOS 18.5, iOS 26.2.5, iOS 27.0 Steps to Reproduce Capture a 48MP ProRAW (DNG) photo with the Camera app. Open my app, call the following api to delete this photo: PHPhotoLibrary.shared().performChanges({ PHAssetChangeRequest.deleteAssets(assets) }, completionHandler: completionHandler) Expected The system delete-confirmation dialog appears; after the user confirms, the asset is deleted and the completionHandler is called or report error if it failed Actual Sometime the following issue happens: The confirmation dialog never appears and the completionHandler is never called no success, no error, no timeout. The built-in Photos app can delete the affected asset but API can't. The stuck request leaks permanently. Even after the same asset is subsequently deleted via the built-in Photos app, the pending completionHandler is still never invoked. Workaround for this issue When the issue happens, restarting the iPhone or reinstall app can not help to fix it But I found if I leave the device alone for an extended period (maybe 10 min~1 hour) and restart the iPhone, finally I found PHAssetChangeRequest.deleteAssets work again. It looks like some background task for 48MP RAW image in DNG format stuck delete API. I need to wait the task finished and restart device to reset stuck status. But I can not know when the DNG is ready to delete, it looks like my app hangs I think the better behavior is completion block should return a error to tell user what happens instead of not calling completion block.
1
0
739
1w
Removing or invalidating a BLE bond when the app is the peripheral (CBPeripheralManager)
Our iOS app runs in the peripheral role. A hardware accessory acts as the central: it connects to the app and bonds in order to read and write characteristics we declare with encryption-required permissions. The app advertises so a previously bonded accessory can reconnect on its own. The problem is that the bond lives on both sides and we can only clear one of them. The accessory has its own "forget this phone" function, and it can also be told to do so remotely. iOS keeps its half, and we have not found any way for the app to remove or invalidate it. What we've checked: CBPeripheralManager and CBCentral expose no unpair or unbond operation. A CBCentral is only visible while connected or subscribed, and its identifier is a resolved handle. Questions: Is there a supported way for an app in the peripheral role to remove or invalidate the pairing keys for a bonded central? If we've missed an API, please point us at it. If not, what's the recommended approach when the peer has discarded its keys and the bond is no longer usable? Can a peripheral-role app detect that state — a distinguishable error or connection event when encryption fails — so we can tell the user something accurate instead of a generic connection failure?
3
0
309
1w
Clarification on BGTaskScheduler.submitTaskRequest(_:completionHandler:) main-thread warning
I’m looking at the new BGTaskScheduler.submitTaskRequest(_:completionHandler:) API on iOS 27 that replaces the now deprecated submit(_:).* The documentation says: This method asynchronously submits the task request and invokes the completion handler with any errors that occur during submission. It also says: The completion handler may be invoked on a arbitrary queue after an arbitrary amount of delay. Do not call this method from the main thread or performance-critical contexts. I’m confused when it says “Do not call this method from the main thread.” Since the method asynchronously submits the request and reports errors later through the completion handler, I initially read this as a warning not to wait for the completion handler to be called assuming it returns quickly. But it specifically says not to call the method from the main thread, which suggests the initial call itself may perform blocking expensive work before returning (although this is confusingly stated in the same block describing the completion handler behavior). Is the intended usage to create/configure the request on the main thread, then dispatch only submitTaskRequest to a background queue, or is calling that on the main thread actually okay just like the submit(_:) API it replaced? My current code in a synchronous function running on the main thread: BGTaskScheduler.shared.register(forTaskWithIdentifier: id, using: .main) { @Sendable registeredTask in // The background continued processing task has started, use it to update progress... } let request = BGContinuedProcessingTaskRequest(identifier: id, title: title, subtitle: subtitle) request.strategy = .fail // Start the task immediately and fail if it cannot if BGTaskScheduler.supportedResources.contains(.gpu) { request.requiredResources = .gpu } do { try BGTaskScheduler.shared.submit(request) // FIXME: How to migrate to the new API? } catch { // No worries, user will just have to keep the app open until the task completes print("BGTaskScheduler request failed: \(error.localizedDescription)") } *I assume this change was made to address issues like FB21052216 (https://developer.apple.com/forums/thread/807370)
Replies
3
Boosts
0
Views
175
Activity
1w
BGContinuedProcessingTask register block not called, submit does not throw an error
I implemented BGContinuedProcessingTask in my app and it seems to be working well for everyone except one user (so far) who has reached out to report nothing happens when they tap the Start Processing button. They have an iPhone 12 Pro Max running iOS 26.1. Restarting iPhone does not fix it. When they turn off the background processing feature in the app, it works. In that case my code directly calls the function to start processing instead of waiting for it to be invoked in the register block (or submit catch block). Is this a bug that's possible to occur, maybe device specific? Or have I done something wrong in the implementation? func startProcessingTapped(_ sender: UIButton) { if isBackgroundProcessingEnabled { startBackgroundContinuedProcessing() } else { startProcessing(backgroundTask: nil) } } func startBackgroundContinuedProcessing() { BGTaskScheduler.shared.register(forTaskWithIdentifier: taskIdentifier, using: .main) { @Sendable [weak self] task in guard self != nil else { return } startProcessing(backgroundTask: task as? BGContinuedProcessingTask) } let request = BGContinuedProcessingTaskRequest(identifier: taskIdentifier, title: title, subtitle: subtitle) request.strategy = .fail if BGTaskScheduler.supportedResources.contains(.gpu) { request.requiredResources = .gpu } do { try BGTaskScheduler.shared.submit(request) } catch { startProcessing(backgroundTask: nil) } } func startProcessing(backgroundTask: BGContinuedProcessingTask?) { // FIXME: Never called for this user when isBackgroundProcessingEnabled is true }
Replies
11
Boosts
0
Views
944
Activity
1w
iOS 27 terminates a running app while MDM converts it to a managed app
We're working on an iOS app distributed through the App Store and installed on an MDM-enrolled device. Our MDM server uses InstallApplication to take management of the already-installed and running app. On iOS 27 betas 3 and 4, processing this command causes iOS to terminate the app and its extensions with SIGKILL. The same flow and MDM payload work without terminating the app on earlier iOS versions (iOS <=26). Environment OS: iOS 27 betas 3 and 4 Does not happen: iOS 26 or iOS 16.7.15 Device: iPhone SE 2nd Gen Enrollment: MDM-enrolled device Distribution: App Store app App state: Already installed and running when management is requested MDM command: InstallApplication Minimal MDM command The MDM server sends an InstallApplication command for the already-installed app: Attributes = { Removable = false; }; ChangeManagementState = Managed; Identifier = "APP_BUNDLE_ID"; InstallAsManaged = true; ManagementFlags = 1; RequestType = InstallApplication; We also tested the equivalent command using iTunesStoreID = APP_STORE_ID instead of Identifier, and removing InstallAsManaged. The targeted running app was terminated in the same way. Steps to reproduce Install and launch the App Store app as an unmanaged app. Enroll the iPhone in MDM. While the app is running, send the MDM InstallApplication command to take management of the existing installation. Observe the unified logs for mdmd, appstored, manageddeviced, installcoordinationd, and runningboardd. The issue can also be reproduced by initiating the same server-side flow while the app is already in the background. iOS 27 log sequence The command is accepted and appstored starts the managed-app tasks. manageddeviced then attempts to mark the app as managed using a null persona (this differs from iOS <26): The running app has a valid persona. After the failed mapping, installcoordinationd explicitly asks RunningBoard to terminate the app to disassociate that persona: After termination, removing the valid persona also fails. The managed-app task later reports success despite the mapping failures and termination. Earlier iOS comparison As an example, on iOS 16.7.15, using the same MDM command, **iOS routes the request through dmd with persona: default. The app remains alive and receives managed-app change notifications. Expected The existing installation becomes managed without terminating the running app, consistent with the behavior on earlier iOS versions. Actual manageddeviced tries to associate the app with persona (null) and fails with MIInstallerErrorDomain Code 191. That failure causes installcoordinationd to request termination of the app and its extensions to disassociate their valid persona. runningboardd terminates them with SIGKILL (isUserKill=0). The subsequent removal of the only valid persona fails with Code 242, although the managed-app task later reports success. Documentation checked The payload follows the documented InstallApplication flow for taking management of an existing app: Apple Docs WWDC26 app MDM updates We have not found a malformed field that explains the iOS 27-only failure. More info Detailed logs and additional info can be found on the Feedback report.
Replies
4
Boosts
5
Views
2.4k
Activity
1w
Verifying TLS 1.3 early_data behavior on iOS 26
Development environment Xcode 26.0 Beta 6 iOS 26 Simulator macOS 15.6.1 To verify TLS 1.3 session resumption behavior in URLSession, I configured URLSessionConfiguration as follows and sent an HTTP GET request: let config = URLSessionConfiguration.ephemeral config.tlsMinimumSupportedProtocolVersion = .TLSv13 config.tlsMaximumSupportedProtocolVersion = .TLSv13 config.httpMaximumConnectionsPerHost = 1 config.httpAdditionalHeaders = ["Connection": "close"] config.enablesEarlyData = true let session = URLSession(configuration: config, delegate: nil, delegateQueue: nil) let url = URL(string: "https://www.google.com")! var request = URLRequest(url: url) request.assumesHTTP3Capable = true request.httpMethod = "GET" let task = session.dataTask(with: request) { data, response, error in if let error = error { print("Error during URLSession data task: \(error)") return } if let data = data, let responseString = String(data: data, encoding: .utf8) { print("Received data via URLSession: \(responseString)") } else { print("No data received or data is not UTF-8 encoded") } } task.resume() However, after capturing the packets, I found that the ClientHello packet did not include the early_data extension. It seems that enablesEarlyData on URLSessionConfiguration is not being applied. How can I make this work properly?
Replies
2
Boosts
0
Views
398
Activity
1w
Unable to attach first auto-renewable subscription to iOS app.
Hello everyone. I’m trying to submit my first auto-renewable subscription with my iOS app, but can’t associate the subscription with my app version in App Store Connect. Setup: app version 1.0.7 with build attached, subscription group “Premium” with weekly, monthly, yearly. All metadata complete; paid apps agreement active, bank details set, admin access confirmed. Problem: “In-App Purchases and Subscriptions” section is missing on my app version page, so I can’t attach my subscription. Draft error says, “Unable to submit for review. Add an app version for the selected platform.” The draft only lists my weekly plan, not the app version. Questions: why might that section be missing? Are there prerequisites? Has anyone seen this? Any guidance or suggestions would be greatly appreciated.
Replies
2
Boosts
1
Views
290
Activity
1w
all
all programme
Replies
0
Boosts
0
Views
105
Activity
1w
Public API to overlay or hide the system keyboard while preserving its exact state?
I am building an iOS text composer with an attachment panel. When its UITextField is first responder and the system keyboard is visible, tapping the attachment button should present a panel that can extend into the region occupied by the keyboard. When the panel closes, the user should return to the same keyboard state without a visible dismissal and re-presentation. The required continuity is: The same UITextField remains first responder. The active input mode remains alphabet, 123, or Emoji. Emoji preserves its selected category, search state, and scroll position. The composer remains positioned above the keyboard throughout the transition. I have investigated the public UIKit approaches: A normal app-window overlay cannot render above the remotely hosted system keyboard. inputAccessoryView remains in the accessory region and cannot cover the keycaps. Resigning first responder visibly dismisses the keyboard and loses continuity. Assigning a custom inputView to the same UITextField and calling reloadInputViews() publicly replaces the keyboard. However, restoring inputView to nil reconstructs the system keyboard and does not preserve the exact Emoji or keyplane state. UIKeyboardLayoutGuide provides geometry but no presentation control. Is there a supported public API or recommended architecture that allows an app to: Temporarily obscure or visually hide the system keyboard while keeping it active and preserving its state? Present app-owned content in a layer above the keyboard keycaps? Temporarily replace the keyboard and restore the same mode, Emoji category, and scroll position? If these are unsupported, what is Apple's recommended way to create an attachment panel that visually occupies the keyboard region while maintaining input continuity? This occurs on iOS 26.x in Simulator and on a physical iPhone using a UIKit-backed text field inside a SwiftUI interface. I am specifically looking for a public API solution and do not want to access private keyboard windows or views.
Replies
0
Boosts
0
Views
110
Activity
1w
India Post tracking numbers are incorrectly detected as DTDC shipments in Messages App
Device: iPhone 17 iOS Version: Latest public release Steps to Reproduce: Receive an SMS from India Post containing a tracking number (e.g. EU714545174IN). Long-press the tracking number. Select Track Shipment. Expected Result: The shipment should be tracked using India Post or the correct carrier. Actual Result: iOS opens an in-app Safari page for DTDC with an invalid tracking URL. The shipment cannot be tracked because the tracking number belongs to India Post, not DTDC. Additional Information: Tapping the India Post website link in the SMS works correctly. Only the built-in Track Shipment action misidentifies the carrier.
Replies
0
Boosts
0
Views
115
Activity
1w
Push notification not send due to netowrk related errors
Beginning July 29, 2026, we observe communication erros while sending push notifications to https://api.push.apple.com like: Error in the HTTP2 framing layer Send failure: Connection reset by peer Also we ran tcpdump which clearly indicates that TCP RESET packets are coming from various APNS IP like 17.188.x.x. Errors mostly occure during traffic peak but also outside. We also did a test from different datacenter in other country and which resulted a same issue
Replies
0
Boosts
1
Views
373
Activity
1w
Builds not syncing. Various resasons. Unknown
I sent it for testing from the Choicely app. I have entered the downloaded key, opened it in Notepad, and pasted the long key; my team and distributor are right. But it seems like Apple always mentions build 1.0.2 (7) when I am actually sending (8). It'll say failed, then suddenly say ready to submit for review. So I will, and I'm waiting for review... then I get a red failed sometime later saying either certificates are not included ( I don't get all that... I'm using Windows, so I can't make them like they say I need to, and sometimes it says invalid binary...although if I look at app info and details... it says binary validated. It will make it to just before TestFlight sometimes, and sometimes it passes TestFlight... also it will say app synced successfully but failed to collect metadata. So many oddities... I don't know what to do!!
Replies
1
Boosts
0
Views
386
Activity
1w
ExternalPurchaseCustomLink.isEligible is false on German storefront despite valid EU entitlement
We are implementing StoreKit External Purchase Link for an iOS app distributed in the European Union and are trying to determine whether we are missing a configuration step or encountering a StoreKit server-side eligibility issue. The failure is reproducible in a focused native Swift Xcode project that directly calls StoreKit: let eligible = await ExternalPurchaseCustomLink.isEligible The sample contains no Flutter code, PayPal SDK, networking, or application business logic. Configuration we have verified: The Account Holder accepted the StoreKit External Purchase Link Entitlement Addendum for EU Apps. StoreKit External Purchase Link is enabled and shown as Assigned for the App ID. The regenerated Development provisioning profile contains com.apple.developer.storekit.external-purchase-link = true. The installed app's signed entitlements contain the same value. The application-identifier and team-identifier match the intended App ID and team. The compiled Info.plist contains SKExternalPurchaseCustomLinkRegions with all 27 lowercase EU region codes, including "de". Germany is available for the app in App Store Connect. No local StoreKit Configuration file is enabled. Test environment: Physical iPhone running iOS 26.5.2 (23F84) Xcode 26.6 (17F113) Real German Media & Purchases Apple Account German Sandbox Apple Account StoreKit 2 storefront ID 143443, country code DEU StoreKit 1 also reports country code DEU AppStore.canMakePayments = true AppTransaction verifies in the Sandbox environment Clean build and reinstall using the regenerated Development profile Observed result: ExternalPurchaseCustomLink.isEligible = false For diagnostic purposes only, after observing false eligibility, we also requested both token types: ACQUISITION: StoreKitError.notAvailableInStorefront SERVICES: StoreKitError.notAvailableInStorefront A delayed recheck still reports storefront DEU and isEligible=false. Our production flow does not request tokens unless eligibility is true. We found the similar thread "Unable to enable eligibility for External Purchase Link APIs" (https://developer.apple.com/forums/thread/808349). In that case, the production Media & Purchases account had an unsupported storefront. In our case, both the real Media & Purchases account and the Sandbox account are German, and StoreKit itself reports DEU. We also found "External Purchase in Japan" (https://developer.apple.com/forums/thread/822618), where an Apple App Store Commerce Engineer requested a Feedback Assistant report with a sysdiagnose and screen recording for isEligible=false. Questions: Should ExternalPurchaseCustomLink.isEligible return true in a developer-signed Sandbox build when the entitlement, compiled Info.plist, German storefront, and account conditions are all satisfied, or is TestFlight/App Store approval required? Is there any additional App Store Connect storefront election, entitlement approval, or server-side activation step required beyond the EU addendum, Assigned capability, signed entitlement, and SKExternalPurchaseCustomLinkRegions? If this configuration is complete, could Apple verify whether eligibility has not propagated correctly for the German Development/StoreKit Sandbox environment, and which diagnostics should be included in a Feedback Assistant report? We have also opened a code-level support request and prepared a minimal native Swift reproduction project. Any guidance from StoreKit engineering would be appreciated.
Replies
0
Boosts
0
Views
168
Activity
1w
iOS 27 Beta - Multiple Critical Issues (Bluetooth, Networking, Feedback Assistant Error)
Device: iPhone 17 Pro iOS Version: iOS 27 beta Problem Description I am experiencing the following issues on iOS 27 Beta: Bluetooth randomly turns off and on automatically • Bluetooth occasionally turns off by itself for a few seconds and then turns back on. • The issue is especially severe when connected to AirPods Pro 2 (latest beta firmware), but it also occurs even without AirPods connected. • It usually only starts happening frequently after the iPhone has been powered on for a long time. Restarting the device temporarily resolves it. 2. Network Connection Issues • Network frequently experiences lag and slow speeds. • The problem becomes particularly noticeable when cellular data is throttled to 1 Mbps. • Even when multiple strong Wi-Fi signals are available, the device often ignores them and continues using or automatically switches back to cellular data (relatively frequent intermittent issue). 3. Feedback Assistant completely broken • Trying to submit feedback through the Feedback Assistant app delay fails with the following error: 开始反馈时出错 请稍后再试。
Replies
1
Boosts
2
Views
630
Activity
1w
will iOS 27 communicate with Mac Ventura?
Will iOS 27 still communicate with Mac Ventura (like iOS 26 does)? I am wondering if someone knows and can give first hand knowledge from beta on this issue in regards to iOS 27 that should come out later this year. Thank you.
Replies
1
Boosts
0
Views
918
Activity
1w
App Review Issue
It has been approximately three weeks since we submitted our app for review via App Store Connect, but it remains "In Review" and the review process has not been completed. For this reason, we also requested an expedited app review to the App Review Team last week. Will the review proceed if we simply wait? Is there any way to check the detailed status of this app review?
Replies
9
Boosts
3
Views
930
Activity
1w
TestFlight iOS app crashes immediately on launch, but build uploads successfully
Our iOS app uploads successfully to App Store Connect and appears in TestFlight, but it crashes immediately on launch. App name: Axioma Pay Bundle ID: uk.co.axiomapay.app Distribution: TestFlight Framework: Expo / React Native Device tested: iPad via TestFlight The app installs, the icon appears, but tapping Open causes an immediate crash. One earlier build displayed this runtime message: Cannot read property 'ErrorBoundary' of undefined Crash logs show the app aborting on the React Native ExceptionsManagerQueue with SIGABRT / EXC_CRASH. We do not currently have a focused minimal Xcode sample project because this is an Expo/EAS React Native production build. We can provide .ips crash logs and App Store Connect/TestFlight build details. Can Apple help confirm whether this crash appears to be caused by: App Store/TestFlight processing, provisioning/signing/entitlements, an iOS runtime issue, or an app-side React Native JavaScript startup exception? Latest TestFlight build crashes immediately after launch.
Replies
1
Boosts
0
Views
387
Activity
1w
Apple Pencil Pairing Issues
Is anybody else having a probelm pairing an Apple Pencil. I insert it into my new 2gen iPad Pro 12.9 and it briefly shows the dialog to Pair and then shows it connected, but then disconnects, and then I get an Error that the Pencil took to long to pair. Then it doesn't work.Am I alone in having this issue.Thanks,Nick
Replies
31
Boosts
0
Views
51k
Activity
1w
ACSP exam from Russia — looking for advice
Hello everyone, I’m Anton, 16 years old, from Russia. I’m already registered in the Apple Certification Records System with Candidate ID APPL475224, and I want to take the ACSP exam. I’m not a programmer — I’m deeply into Apple devices: iPhone, iPad, Mac, Apple Watch, and know iOS/macOS well. I’ve already contacted Apple Support and got Case ID 21352800. Now I’m looking for practical advice from people who’ve been through this: Is the ACSP exam fully available in Russian? How do you actually pay for the exam from Russia these days? Any materials you’d recommend? I’m not a developer — I’m a support specialist. I want to be certified so I can help people here in Russia. Not for money — just so people can trust that I know what I’m talking about. Thanks in advance!
Replies
0
Boosts
0
Views
534
Activity
1w
iOS version of my app got stuck in "Waiting for review" the macOS version was already approved
Hi everyone, I submitted a universal app earlier this week on Monday at 12:00 AM. The macOS version went through the queue smoothly and was approved within 2 days. However, the iOS version is still stuck in the "Waiting for Review" stage. It hasn't even changed to "In Review" yet, and it has now been over 5 days. A few details about the app: It has no login or account requirements. It doesn't rely on any external dependencies. Has anyone else experienced severe iOS queue delays this week? Is it normal for the iOS queue to be this backed up while the Mac queue flies by? I haven't sent a formal inquiry to the App Review team yet because the contact page wording was a bit confusing, so I wanted to check here first to see if this is a widespread queue backlog or if I should just keep waiting over the weekend. Thanks!
Replies
0
Boosts
0
Views
203
Activity
1w
PHAssetChangeRequest deleteAssets completionHandler for recently captured 48MP DNG sometimes never called
I want to report a issue on PHAssetChangeRequest.deleteAssets Environment iOS 18.5, iOS 26.2.5, iOS 27.0 Steps to Reproduce Capture a 48MP ProRAW (DNG) photo with the Camera app. Open my app, call the following api to delete this photo: PHPhotoLibrary.shared().performChanges({ PHAssetChangeRequest.deleteAssets(assets) }, completionHandler: completionHandler) Expected The system delete-confirmation dialog appears; after the user confirms, the asset is deleted and the completionHandler is called or report error if it failed Actual Sometime the following issue happens: The confirmation dialog never appears and the completionHandler is never called no success, no error, no timeout. The built-in Photos app can delete the affected asset but API can't. The stuck request leaks permanently. Even after the same asset is subsequently deleted via the built-in Photos app, the pending completionHandler is still never invoked. Workaround for this issue When the issue happens, restarting the iPhone or reinstall app can not help to fix it But I found if I leave the device alone for an extended period (maybe 10 min~1 hour) and restart the iPhone, finally I found PHAssetChangeRequest.deleteAssets work again. It looks like some background task for 48MP RAW image in DNG format stuck delete API. I need to wait the task finished and restart device to reset stuck status. But I can not know when the DNG is ready to delete, it looks like my app hangs I think the better behavior is completion block should return a error to tell user what happens instead of not calling completion block.
Replies
1
Boosts
0
Views
739
Activity
1w
Removing or invalidating a BLE bond when the app is the peripheral (CBPeripheralManager)
Our iOS app runs in the peripheral role. A hardware accessory acts as the central: it connects to the app and bonds in order to read and write characteristics we declare with encryption-required permissions. The app advertises so a previously bonded accessory can reconnect on its own. The problem is that the bond lives on both sides and we can only clear one of them. The accessory has its own "forget this phone" function, and it can also be told to do so remotely. iOS keeps its half, and we have not found any way for the app to remove or invalidate it. What we've checked: CBPeripheralManager and CBCentral expose no unpair or unbond operation. A CBCentral is only visible while connected or subscribed, and its identifier is a resolved handle. Questions: Is there a supported way for an app in the peripheral role to remove or invalidate the pairing keys for a bonded central? If we've missed an API, please point us at it. If not, what's the recommended approach when the peer has discarded its keys and the bond is no longer usable? Can a peripheral-role app detect that state — a distinguishable error or connection event when encryption fails — so we can tell the user something accurate instead of a generic connection failure?
Replies
3
Boosts
0
Views
309
Activity
1w