Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Custom keyboard: public API to activate containing app for user-initiated dictation (Guideline 4.4.1)
Product: Vozzy — custom keyboard + containing app for user-initiated dictation. Bundle: br.com.buddyapps.FlowType App Group: group.br.com.buddyapps.FlowType Flow: User selects our keyboard in a host app (Notes/Messages). Without Full Access, QWERTY input works locally. With Full Access, user taps Microphone to dictate. Containing app owns mic permission, AVAudioSession, capture, SpeechAnalyzer, Foundation Models. Keyboard never captures audio; it reflects shared state and inserts via textDocumentProxy. Already settled (do not re-ask): No public API to identify the host app. No public API to return to the host app. Feedback: FB22247647. Question (single issue): App Review Guideline 4.4.1 says keyboard extensions must not launch apps other than Settings. Is there any public, App-Review-compliant mechanism for a custom keyboard to request its containing app to activate audio capture for this user-initiated dictation flow? If yes: Which public API / App Intent surface? Is a visible switch to the containing app required? May the audio session continue while the user returns to the host app? May Stop/Cancel commands travel through an App Group while the containing app is backgrounded? Our current policy: Launch uses public NSExtensionContext.open (Debug only). Release has no keyboard path that opens the containing app. Release does allow in-place signaling when the app is already resident (App Group command + Darwin notification; launches nothing). We will not enable Release launch without a written answer naming an allowed public mechanism. App Group payload inventory + retention, Full Access-off QWERTY behavior, onboarding privacy copy. I do not have a focused Xcode sample because this is an API / App Review policy question, not a crash or incorrect return value. The keyboard extension never captures audio. Debug uses public NSExtensionContext.open; Release compiles that path out. I can attach flow diagrams and a device screen recording. Related: FB22247647 (return to host — already answered No; not re-asking).
1
1
809
2w
Universal Links not working even though all debug steps succeed
I am trying to get universal links to work in our app Firefox iOS The Problem: I am not able to get universal links to work for our release app or beta app scheme locally or with a TestFlight build. I am able to get it working on our development scheme with a locally hosted app site association file. I also was able to get it working using our development scheme but setting the bundle id to the release app bundle id. I also built a demo app with the release app id and the release app development certificate. It succeeded there as well. Implementation Steps: Added associated domains entitlement to the production and beta schemes for our main app target (No associated domains entitlements or capabilities added for any extensions) Confirmed that the bundle ids associated with these schemes have the associated domains capability Added applinks:blog.mozilla.org to associated domains list Confirmed in code that user activities are being handled via SceneDelegate.swift Steps to Debug: I have gone through and validated every step in the provided Universal Link Debugging. All were successful: Associated Domains Development -> Diagnostics: Opens Installed App Validate AASA host and applinks match curl -v https://blog.mozilla.org/.well-known/apple-app-site-association returns the expected json file swcutil dl correctly downloads the AASA blob swcutil verify succeeds I have inspected the IPA of our beta build and confirmed the App ID and the associated domains is an entitlement. I have looked at the console logs filtering by swcd. I am not seeing any errors and I see the download for the AASA file kick off: Beginning data task AASA-4BABF039-3C69-4E36-AA4E-ECCDF3D14878 { domain: bl….mo….org, bytes: 0, route: cdn } There is only one error that appears in the console but our app is not enterprise-managed so I assume this is normal. Error getting enterprise-managed associated domains data. If this device is not enterprise-managed, this is normal: Error Domain=SWCErrorDomain Code=1701 "Failed to get associated domain data from ManagedConfiguration framework." UserInfo={NSDebugDescription=Failed to get associated domain data from ManagedConfiguration framework., Line=298, Function=<private>} I have run Sysdiagnos and identified for our App ID: Site/Fmwk Approval: approved I am at a loss as to what is preventing universal links from working even though all validation steps pass.
4
0
1.5k
2w
Core Spotlight batching: persistence and atomicity guarantees
I’m trying to understand what guarantees CSSearchableIndex batching provides. beginBatch() // submit changes to searchable items (add/update/delete) endBatch(withClientState: newState) Two questions: 1. Persistence before endBatch If the app crashes after submitting changes to searchable items, but before calling endBatch, are those changes guaranteed not to be persisted? If the answer is yes, then the follow-up question is: 2. Atomicity of endBatch When endBatch(withClientState:) succeeds, is the batch atomic with respect to all submitted item changes, and the new client state? In other words, is it guaranteed that: either all submitted item changes and the new client state are persisted, or neither is persisted? Or is there any internal failure scenario in which the batch is only partially persisted – for example, some or all of the item changes persisted, but without the corresponding client state?
0
1
133
2w
Is voluntary self-control on employee-owned iPhones considered use “in organizational settings” under the Family Controls terms?
Hello, Apple Developer Technical Support directed me to the Developer Forums for clarification on the following Family Controls use case. DTS reference: Case-ID 21723677 I am evaluating an iOS app called “Zone” before beginning full development. I would like to determine whether the proposed architecture is considered permitted individual device management for focus and productivity, or prohibited use “in organizational settings” under Section 3.3.3(P) of the Apple Developer Program License Agreement. Proposed architecture: Zone is offered to companies as a workplace focus and productivity service. The app is installed on an adult employee’s personally owned iPhone. Participation and each Focus Session are voluntary. The employee independently requests Family Controls authorization using individual authorization. Only the employee can select the apps and websites to restrict. Only the employee can start or stop a Focus Session. During the session, Zone applies restrictions locally on that employee’s iPhone using Family Controls and Managed Settings. The employer cannot authorize or revoke Family Controls access. The employer cannot select restricted apps or websites. The employer cannot remotely start, stop, or schedule a Focus Session. The employer cannot remotely manage or control the employee’s device. Zone would not provide the employer with: Screen Time or Device Activity data App or website tokens App usage history Website browsing history Information about attempts to open restricted apps Location, messages, photos, or other personal device information However, Zone would include a company web dashboard. The dashboard would show only an app-generated boolean status for each participating employee: Zone ON: the employee has voluntarily started a Focus Session Zone OFF: the employee has not started a Focus Session This status is generated by the Zone app itself. It is not derived from Screen Time usage data and does not indicate whether the employee actually attempted to use any restricted app or website. My questions are: Would this architecture be considered permitted individual device management for focus and productivity, even though the service is offered through an employer and the employer can see the Zone ON/OFF status? Or would the employer relationship and company dashboard make this prohibited use of Family Controls “in organizational settings”? If sharing the app-generated ON/OFF status with the employer is incompatible with the Family Controls terms, would the use be permitted if Family Controls operated entirely on-device and no Focus Session status or device information were sent to the employer? Is there another Apple-supported framework or architecture recommended for this use case? I understand that final entitlement approval and App Review decisions may depend on the submitted application. I am seeking architectural guidance before investing in implementation. Thank you.
0
0
137
2w
PushToTalk session sometimes returns silence data after activation
Hello! Thank you for bringing the new iPhone experience with the PushToTalk framework. I have a working walkie talkie app based on the PushToTalk framework. Everything works fine except for an intermittent bug that I face from time to time on different devices with different iOS versions, from iOS 18 to iOS 26.2 Beta. Sometimes the app goes into a state where the AVAudioInputNode input node tap returns buffers with a constant size that contain only silence. Leaving and rejoining a channel helps, but relaunching or reinstalling (from Xcode) the app does not. Rebooting the device or deleting and reinstalling the app also helps. I do not activate the audio session in my app. I only configure it on launch using setCategory(.playAndRecord, options: [.defaultToSpeaker, .allowBluetooth]) So the flow is: channelManager?.requestBeginTransmitting(channelUUID: globalChannelUUID) func channelManager( _ channelManager: PTChannelManager, channelUUID: UUID, didBeginTransmittingFrom source: PTChannelTransmitRequestSource ) func channelManager( _ channelManager: PTChannelManager, didActivate audioSession: AVAudioSession ) { /// ... installTapAndStart() } private func installTapAndStart() { let inputNode = audioEngine.inputNode let hardwareFormat = inputNode.outputFormat(forBus: 0) guard let targetFormat = AVAudioFormat( commonFormat: .pcmFormatFloat32, sampleRate: configuration.audioSampleRate, channels: configuration.audioChannelsCount, interleaved: true ) else { handleError(RecorderError.invalidAudioFormat) return } let converter = AVAudioConverter(from: hardwareFormat, to: targetFormat)! print("[QUICOpusRecorder]: installTap") inputNode.installTap(onBus: 0, bufferSize: tapBufferSize, format: hardwareFormat) { [weak self] buffer, _ in guard let self else { return } // Here I handle audio data and sometimes get silence } //... do { audioEngine.prepare() try audioEngine.start() } catch { print(" ⚠️ Audio engine start error: \(error)") handleError(error) } } Moreover, if the app is in the foreground and PushToTalk gets stuck in this “silence bug”, I can avoid relying on the PushToTalk flow and simulate audio session activation manually in code. In this case I do not request a transmission and do not use any PushToTalk related code, and the app captures audio data perfectly. Once I leave the channel and rejoin it again, the issue is fixed and I start to receive non silent buffers of varying size, as expected. It works for a while. It can work fine for a day or more, communicating without launching the app, or with the app in the foreground. But it can also go into the “silence” state 30 minutes after working normally. I have no clue why this happens. The only thing I notice is that when the app is in this “stuck silence bug” state, iOS does not play its “chirp” system sound when audio recording starts. P.S. Channel descriptor restoration code: extension PushToTalkEngine: PTChannelRestorationDelegate { public func channelDescriptor(restoredChannelUUID channelUUID: UUID) -> PTChannelDescriptor { print("☀️ \(#function) channelUUID: \(channelUUID)") Task { @MainActor in // Here I fetch more detailed channel data asynchronously do { await initChannelManagerIfNeeded(channelUUID: channelUUID) let channelDescriptor = currentChannelDescriptor() lastChannelDescriptorName = channelDescriptor.name try await channelManager?.setChannelDescriptor( channelDescriptor, channelUUID: channelUUID ) } catch { handleError(error) } } return PTChannelDescriptor(name: "Loading...", image: nil) } } private func initChannelManagerIfNeeded(channelUUID: UUID? = nil) async { guard let channelUUID = channelUUID ?? currentUser?.globalChannelUUID else { print("❌ No global channel uuid found") return } do { guard channelManager == nil else { try await channelManager?.setTransmissionMode(.halfDuplex, channelUUID: channelUUID) return } channelManager = try await PTChannelManager.channelManager( delegate: self, restorationDelegate: self ) try await channelManager?.setTransmissionMode(.halfDuplex, channelUUID: channelUUID) } catch { handleError(error) } }
4
0
1.3k
3w
provider(_:didActivate:) callback intermittently not triggered, causing widespread audio loss for users
Hi everyone, I am facing a critical issue where the CallKit provider delegate method provider(_:didActivate:) is intermittently not triggered. This occasionally results in a total loss of audio during some VoIP calls, while other calls work perfectly fine. Here is the sequence of steps I am currently implementing: Report Incoming Call: The app receives a VoIP push notification and reports the call using reportNewIncomingCall(with:update:completion:). Answer Action: The user taps the answer button, and the app processes the CXAnswerCallAction. Configure Audio Session: Inside the provider delegate, I configure the AVAudioSession category and mode (e.g., setting category to .playAndRecord and mode to .voiceChat). Note: As per Apple's guidelines, I do not call setActive(true) manually, expecting CallKit to activate it automatically. Despite following this standard flow, there are times when provider(_:didActivate:) is skipped entirely, meaning the audio engine fails to initialize for that specific call session. We are currently receiving a large volume of user complaints regarding this issue, as it heavily impacts the core calling experience in production. Could an Apple engineer or anyone from the community look into this? Any insights into what might be causing CallKit to occasionally fail to activate the audio session or how to work around this would be highly appreciated. Thank you!
5
0
941
3w
CallKit does not activate audio session with higher probability after upgrading to iOS 18.4.1
Hi, We've noticed that this issue occurs more frequently after upgrading to iOS 18.4.1 and can result in one-way audio. Our app uses CallKit with WebRTC to establish VoIP connections. However, on iOS 18.4.1, CallKit no longer triggers: func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) We're currently comparing the occurrence rate across different iOS versions to better understand the impact. Could you please help analyze the root cause of this issue?
38
1
4.4k
3w
Spotlight on finds title attribute (OS27 b3)
Hi, it seems that something in OS27b3 changed regarding Core Spotlight: Whatever I try, Siri and Spotlight only seem to find the text inside the title or displayName attribute. But attributes like textContent or contentDescription or keywords seem to be ignored. Those attributes are still found, when I do a manual search using CSUserQuery or using the AppEntityDefinition.spotlightQuery(_:) in App Intent Testing. I have already filed a Feedback – but wonder whether anyone else is having this issue? FB23635795 Thanks, Friedrich
4
0
716
3w
AlarmKit alarm occasionally fires at exactly 12:00 AM
[FB22327481] We are observing a rare issue where alarms scheduled using AlarmKit occasionally fire exactly at 12:00 AM, even though the alarm was scheduled for a different time. This issue happens only for a very small number of users (for example, 1–2 users per several thousand per day), but multiple reports confirm that the alarm goes off exactly at midnight. We also found that other developers are experiencing the same issue: https://developer.apple.com/forums/thread/815714 Observed behavior For a small number of users: Alarm fires at exactly 00:00 (midnight) This happens even when the scheduled alarm time is something like 7:30 AM Happens rarely Hard to reproduce internally Appears to happen only on real devices in production Additional notes We are using AlarmKit fixed schedules (not relative) Dates passed to AlarmKit are correct at scheduling time We do not intentionally create midnight alarms Issue seems random Question Are there any known limitations or edge cases with AlarmKit fixed schedules that could cause alarms to fire at midnight? For example: Invalid date fallback? Schedule expiration fallback? Time zone changes? Background refresh timing? Maximum schedule window? Any guidance would be appreciated, as this is affecting real users but is difficult to reproduce.
5
1
943
3w
App Clip card not shown for links in Messages despite passing every documented check
We ship an App Clip with our iOS app and want the App Clip card to appear when users share our website's links in Messages. Instead, recipients only get a plain link preview. The App Clip was approved and has been live on the App Store for over a week. We've verified every requirement from the docs ("Associating your App Clip with your website" and the Messages invocation requirements): The invocation page's server-rendered HTML (no JS needed) contains the meta tag: apple-itunes-app with app-id and app-clip-bundle-id set correctly. /.well-known/apple-app-site-association has an "appclips" section listing the clip's app ID, and Apple's AASA CDN (app-site-association.cdn-apple.com/a/v1/) serves the same content. The App Clip's entitlements include appclips: and the correct parent application identifier. Via the App Store Connect API, the currently live build contains the APP_CLIP build bundle, and the live version has a default App Clip experience (action OPEN, with localizations). The default experience link https://appclip.apple.com/id?p= returns 200 and shows the clip. Tested in Messages between two devices whose owners are in each other's contacts, in brand-new conversations, on current iOS. However, on-device App Clip diagnostics (Settings > Developer > App Clips Testing > Diagnostics) for the invocation URL show the "App Clip Published on App Store" and "Associated Domains" checks not passing, even though everything above is verified correct. ("No Advanced Experience registered" also appears, but as we understand it advanced experiences are only needed for QR/NFC/App Clip Codes, not Messages.) Has anyone seen device-side association fail like this when the server-side config is demonstrably correct? Is there a known propagation delay after releasing a new app version, or a way to force the device to refresh its App Clip association cache beyond rebooting? Any pointers on what the diagnostics tool checks that isn't covered by the list above would be appreciated.
1
0
180
3w
Callkit returns error code=106 which is not on official document
Callkit returns error code=106. I can't find what this error code means in official documents. What is this error code? Has anybody seen this error code so far? My app is VoIP app using APNs VoIP push. Below is log example of my app. 2026/04/26 09:01:45.752 [436:103]CallManager incomingCall(::::_:completion:):228: error Error Domain=com.apple.CallKit.error.incomingcall Code=106 "(null)"
1
0
253
3w
Quick Look no longer invokes third-party Markdown preview extensions on iOS 27
On iOS 26, Quick Look invokes an installed data-based Quick Look preview extension for .md files resolved as net.daringfireball.markdown, and the extension renders the Markdown correctly. On iOS 27, the same document and the same installed extension no longer work. Quick Look still resolves the file as net.daringfireball.markdown, but it does not invoke the extension and instead displays the raw Markdown source using the generic plain-text preview. The extension subclasses QLPreviewProvider, has QLIsDataBasedPreview enabled, and includes net.daringfireball.markdown in QLSupportedContentTypes. As a control, the same installed extension correctly launches and renders equivalent document content when it is presented through a custom Uniform Type Identifier. This confirms that the extension is embedded, installed, and otherwise invocable; the failure is specific to Quick Look's provider selection for Markdown on iOS 27. Reproduction: Install an app containing the data-based preview extension described above. On iOS 26, open an .md document in Quick Look and observe that the extension is launched and renders the Markdown. On iOS 27, open the same document with the same extension installed. I reproduced this through Files, although the issue concerns Quick Look provider selection rather than Files-specific behavior. Observe that the extension is not launched and the raw Markdown source is shown. Open an equivalent document registered with a custom content type supported by the same extension. Observe that Quick Look launches the extension and displays the rendered preview. The attached screenshots show the same Markdown case rendered by QuickMark on iOS 26 and falling back to plain text on iOS 27. Is there a supported way for a third-party preview extension to handle net.daringfireball.markdown on iOS 27, or is this an unintended provider-selection regression? Tested with iOS 27.0 (24A5408d) on an iPhone 17 Pro Max Simulator using Xcode 27.0 (27A5237l). Feedback filed as FB24481377.
1
0
121
3w
Live Caller ID Lookup Extension - No option in phone settings
iOS 18 (22A3354) will not offer a option in settings (> Apps > Phone) after calling openSettings to enable live caller id lookup extension. iPhone and MacBook are in the same network. The PIRService runs on MacBook and is reachable via iPhone Safari (via http://MacBookPro:8080/). Hummingbird print log: hb_method=GET hb_uri=/ [Hummingbird] Request. After deploying the application via Xcode to the iPhone no requests are printed in the terminal. The extension was added like documented and bundle id is also checked multiple times. issuerRequestUri in service-config.json is http://MacBookPro:8080/issue. As far as I can tell, everything has been set up in accordance with the Testing Live Caller ID instructions. Is there something missing?
10
0
2k
3w
iOS 26.2 RC DeviceActivityMonitor.eventDidReachThreshold regression?
Hi there, Starting with iOS 26.2 RC, all my DeviceActivityMonitor.eventDidReachThreshold get activated immediately as I pick up my iPhone for the first time, two nights in a row. Feedback: FB21267341 There's always a chance something odd is happening to my device in particular (although I can't recall making any changes here and the debug logs point to the issue), but just getting this out there ASAP in case others are seeing this (or haven't tried!), and it's critical as this is the RC. DeviceActivityMonitor.eventDidReachThreshold issues also mentioned here: https://developer.apple.com/forums/thread/793747; but I believe they are different and were potentially fixed in iOS 26.1, but it points to this part of the technology having issues and maybe someone from Apple has been tweaking it.
31
8
7.3k
3w
App Icon Does Not Update to the Latest Default Icon on Some iOS Devices After App Update
Environment Platform: iOS iOS versions tested: : 26.5.2, 26.5 Xcode: 26.3 Language: Swift UI framework: SwiftUI App distribution: App Store Device models tested: : iPhone 17, iPhone 16, iPhone 15 pro max, iPhone 17 pro max Issue We are experiencing an issue where the app icon does not update to the latest app icon after an app update on some devices. Initially, our app used Apple's alternate app icon functionality through setAlternateIconName to dynamically change the app icon. However, we observed that the alternate icon was not being updated correctly on some devices. As it was not working , we removed the alternate icon approach and changed the primary/default app icon in the application itself. We then submitted an updated app version with the new default icon. After updating the app, the new app icon is displayed correctly on some devices, but on some other devices the previous/old app icon continues to be displayed, even though the app has been successfully updated to the latest version. The issue appears to be device-specific, as the same app version can display the new icon on one device while continuing to display the old icon on another device. Expected Behavior After installing an app update containing a new default app icon, the new app icon should be displayed on the Home Screen and in relevant system locations such as Shortcuts. Actual Behavior On some devices, after successfully updating the application to the new version, the old app icon continues to be displayed. The application itself is updated successfully and launches normally. The issue is specifically with the icon displayed by the system. Steps to Reproduce Install an older version of the application containing the old app icon. Update the application to a newer version where the default/primary app icon has been changed. Verify that the application has been updated to the latest version. Return to the Home Screen. Observe the application icon. If applicable, check the application icon in the Shortcuts interface. Expected: The new app icon is displayed. Actual: On some devices, the previous app icon is still displayed. Additional Observations We observed different behaviors on affected devices: On one affected device, the old icon remained after the app update but changed to the new icon after restarting the device. On another affected device, the icon changed to the new icon after some time without reinstalling the application. However, on that device, the old icon continued to be displayed in the Shortcuts interface even after the Home Screen icon had changed to the new icon. Reinstalling the application causes the new icon to appear correctly. These observations make the behavior appear to be related to how iOS refreshes or caches application icons after an app update. Additional Information We initially attempted to use Apple's alternate app icon functionality through setAlternateIconName. The alternate icon approach did not update the icon consistently across all tested devices. We therefore changed the application's default/primary icon instead of relying on alternate icons. The issue still occurs on some devices even after changing the default app icon. The application itself functions normally after the update; only the displayed app icon remains unchanged on the affected devices. The issue appears to occur specifically with updating an existing installation rather than installing the application for the first time. Questions Is there any known iOS behavior where the previous Home Screen icon can remain cached after an app update? Is there a recommended way to ensure that iOS refreshes the Home Screen icon after changing the default app icon? Could this behavior be related to the previous use of alternate app icons through setAlternateIconName? Why might the Home Screen icon update after a restart or after some time while the icon shown in Shortcuts continues to display the previous icon? Are there any specific requirements for CFBundleIcons, asset catalogs, Info.plist, or other configuration that we should verify when changing the primary app icon? Is this a known issue on any specific iOS versions or device configurations? We would appreciate any guidance on whether this is expected iOS behavior, an icon caching issue, or if there is something specific we should change in our application configuration.
2
0
177
3w
iOS 27 Public Beta - CoreBluetooth disconnects during BLE credential send open command to access control readers
Hello Apple Developer Team, We are observing a BLE connectivity issue in our application BlueDiamond Mobile Elite after upgrading devices to iOS 27 Public Beta. Environment App: BlueDiamond Mobile Elite Platform: iOS 27 Public Beta Framework: CoreBluetooth Device Type: iPhone BLE Peripheral: Access control/BLE reader Testing Status: BLE scanning works correctly. Reader discovery works correctly. Connection establishment succeeds. Service and characteristic discovery complete successfully. Issue occurs during credential transmission. Problem Description After connecting to a BLE reader, our application sends mobile credentials to the reader using CoreBluetooth. The workflow is: Scan for BLE readers. Discover target reader. Connect to reader. Discover services and characteristics. Start credential transfer. BLE connection disconnects unexpectedly during or immediately after the credential write operation. The disconnect occurs before the credential transaction completes successfully. Observed Behavior BLE scanning is functioning normally on iOS 27 Public Beta. The reader is discovered without issues. Connection is established successfully. Credential provisioning/credential write operation triggers the problem. centralManager(_:didDisconnectPeripheral:error:) is invoked after the credential transfer attempt. The credential is not successfully delivered to the reader. Expected Behavior The BLE connection should remain active throughout the credential provisioning process and disconnect only after the transaction is completed or when explicitly terminated by the application. Additional Information The same credential issuance flow worked correctly on previous iOS versions. We have already addressed another iOS 27 compatibility issue related to QR code access by updating to Apple's recommended APIs. We are currently investigating whether the BLE disconnection is caused by: Changes in CoreBluetooth behavior in iOS 27 Public Beta. MTU/write packet handling. Write-with-response versus write-without-response behavior. Peripheral firmware compatibility. Credential payload size or transfer timing. Questions Are there any known CoreBluetooth regressions or behavior changes in iOS 27 Public Beta related to characteristic writes or BLE credential provisioning? Has anyone observed unexpected peripheral disconnects during write operations on iOS 27 Public Beta? Are there any recommended changes for applications performing secure credential transfers to BLE peripherals? Any guidance would be greatly appreciated.
1
0
911
3w
DeclaredAgeRange API not triggering in regulated regions (Brazil, Utah) — Is it functioning in production?
Hi, We've implemented age assurance logic in our app using the DeclaredAgeRange framework to comply with regulations in Brazil (Digital ECA, effective March 17, 2026) and Utah (App Store Accountability Act, effective May 6, 2026). Our implementation calls AgeRangeService.shared.isEligibleForAgeFeatures on app launch to determine whether the current user is subject to age assurance requirements, and proceeds to call requestAgeRange(ageGates:) accordingly. However, after monitoring in production since the Brazil enforcement date, we've consistently observed isEligibleForAgeFeatures returning false for users in regulated regions, with no age range data being returned. What we'd like to clarify: Is isEligibleForAgeFeatures currently returning true for users in Brazil in production (not sandbox)? For Utah — given that HB 498 pushed the developer compliance deadline to May 6, 2027, will isEligibleForAgeFeatures reflect the original May 6, 2026 activation date or the revised 2027 date? Is there a known rollout schedule or gradual activation plan for these regions that would explain why the flag remains false even after the legal enforcement dates have passed? We've seen similar reports from other developers on these forums, so it seems this may be a widespread issue rather than an implementation problem on our end. Any official guidance on the current status of the API in regulated regions would be greatly appreciated. Thanks.
2
1
1.3k
4w
Unable to use new Siri in macOS27 beta - showing connection error.
When trying to access new Siri in macOS 27 beta 7 it always showing 'I’m having trouble with the connection. Please try again later.'. Tried changing the language multiple times and restarted the mac as well. But nothing resolved the issue. Has anybody faced this issue. is this related to network settings ?.
Replies
0
Boosts
0
Views
335
Activity
2w
Custom keyboard: public API to activate containing app for user-initiated dictation (Guideline 4.4.1)
Product: Vozzy — custom keyboard + containing app for user-initiated dictation. Bundle: br.com.buddyapps.FlowType App Group: group.br.com.buddyapps.FlowType Flow: User selects our keyboard in a host app (Notes/Messages). Without Full Access, QWERTY input works locally. With Full Access, user taps Microphone to dictate. Containing app owns mic permission, AVAudioSession, capture, SpeechAnalyzer, Foundation Models. Keyboard never captures audio; it reflects shared state and inserts via textDocumentProxy. Already settled (do not re-ask): No public API to identify the host app. No public API to return to the host app. Feedback: FB22247647. Question (single issue): App Review Guideline 4.4.1 says keyboard extensions must not launch apps other than Settings. Is there any public, App-Review-compliant mechanism for a custom keyboard to request its containing app to activate audio capture for this user-initiated dictation flow? If yes: Which public API / App Intent surface? Is a visible switch to the containing app required? May the audio session continue while the user returns to the host app? May Stop/Cancel commands travel through an App Group while the containing app is backgrounded? Our current policy: Launch uses public NSExtensionContext.open (Debug only). Release has no keyboard path that opens the containing app. Release does allow in-place signaling when the app is already resident (App Group command + Darwin notification; launches nothing). We will not enable Release launch without a written answer naming an allowed public mechanism. App Group payload inventory + retention, Full Access-off QWERTY behavior, onboarding privacy copy. I do not have a focused Xcode sample because this is an API / App Review policy question, not a crash or incorrect return value. The keyboard extension never captures audio. Debug uses public NSExtensionContext.open; Release compiles that path out. I can attach flow diagrams and a device screen recording. Related: FB22247647 (return to host — already answered No; not re-asking).
Replies
1
Boosts
1
Views
809
Activity
2w
Universal Links not working even though all debug steps succeed
I am trying to get universal links to work in our app Firefox iOS The Problem: I am not able to get universal links to work for our release app or beta app scheme locally or with a TestFlight build. I am able to get it working on our development scheme with a locally hosted app site association file. I also was able to get it working using our development scheme but setting the bundle id to the release app bundle id. I also built a demo app with the release app id and the release app development certificate. It succeeded there as well. Implementation Steps: Added associated domains entitlement to the production and beta schemes for our main app target (No associated domains entitlements or capabilities added for any extensions) Confirmed that the bundle ids associated with these schemes have the associated domains capability Added applinks:blog.mozilla.org to associated domains list Confirmed in code that user activities are being handled via SceneDelegate.swift Steps to Debug: I have gone through and validated every step in the provided Universal Link Debugging. All were successful: Associated Domains Development -> Diagnostics: Opens Installed App Validate AASA host and applinks match curl -v https://blog.mozilla.org/.well-known/apple-app-site-association returns the expected json file swcutil dl correctly downloads the AASA blob swcutil verify succeeds I have inspected the IPA of our beta build and confirmed the App ID and the associated domains is an entitlement. I have looked at the console logs filtering by swcd. I am not seeing any errors and I see the download for the AASA file kick off: Beginning data task AASA-4BABF039-3C69-4E36-AA4E-ECCDF3D14878 { domain: bl….mo….org, bytes: 0, route: cdn } There is only one error that appears in the console but our app is not enterprise-managed so I assume this is normal. Error getting enterprise-managed associated domains data. If this device is not enterprise-managed, this is normal: Error Domain=SWCErrorDomain Code=1701 "Failed to get associated domain data from ManagedConfiguration framework." UserInfo={NSDebugDescription=Failed to get associated domain data from ManagedConfiguration framework., Line=298, Function=<private>} I have run Sysdiagnos and identified for our App ID: Site/Fmwk Approval: approved I am at a loss as to what is preventing universal links from working even though all validation steps pass.
Replies
4
Boosts
0
Views
1.5k
Activity
2w
Core Spotlight batching: persistence and atomicity guarantees
I’m trying to understand what guarantees CSSearchableIndex batching provides. beginBatch() // submit changes to searchable items (add/update/delete) endBatch(withClientState: newState) Two questions: 1. Persistence before endBatch If the app crashes after submitting changes to searchable items, but before calling endBatch, are those changes guaranteed not to be persisted? If the answer is yes, then the follow-up question is: 2. Atomicity of endBatch When endBatch(withClientState:) succeeds, is the batch atomic with respect to all submitted item changes, and the new client state? In other words, is it guaranteed that: either all submitted item changes and the new client state are persisted, or neither is persisted? Or is there any internal failure scenario in which the batch is only partially persisted – for example, some or all of the item changes persisted, but without the corresponding client state?
Replies
0
Boosts
1
Views
133
Activity
2w
Since ios 16 Calendar App is getting google shared calendar notifications non stop
Hello! Thanks for helping. This is driving me crazy. Since ios 16 Calendar App is getting notifications from shared calendar in the "inbox" bottom right like crazy. These invite are not related to my personnal calendar. How do I stop these ?? thanks in advance guys I have looked everywhere.
Replies
40
Boosts
18
Views
13k
Activity
2w
Access to user’s application usage
Does anybody know if Apple allows for apps to access a user’s applicationa’ usage data? As a part of an app idea I have I need to see What is the screen time of each user on each app (Not only mine). Is it possible?
Replies
2
Boosts
0
Views
229
Activity
2w
Is voluntary self-control on employee-owned iPhones considered use “in organizational settings” under the Family Controls terms?
Hello, Apple Developer Technical Support directed me to the Developer Forums for clarification on the following Family Controls use case. DTS reference: Case-ID 21723677 I am evaluating an iOS app called “Zone” before beginning full development. I would like to determine whether the proposed architecture is considered permitted individual device management for focus and productivity, or prohibited use “in organizational settings” under Section 3.3.3(P) of the Apple Developer Program License Agreement. Proposed architecture: Zone is offered to companies as a workplace focus and productivity service. The app is installed on an adult employee’s personally owned iPhone. Participation and each Focus Session are voluntary. The employee independently requests Family Controls authorization using individual authorization. Only the employee can select the apps and websites to restrict. Only the employee can start or stop a Focus Session. During the session, Zone applies restrictions locally on that employee’s iPhone using Family Controls and Managed Settings. The employer cannot authorize or revoke Family Controls access. The employer cannot select restricted apps or websites. The employer cannot remotely start, stop, or schedule a Focus Session. The employer cannot remotely manage or control the employee’s device. Zone would not provide the employer with: Screen Time or Device Activity data App or website tokens App usage history Website browsing history Information about attempts to open restricted apps Location, messages, photos, or other personal device information However, Zone would include a company web dashboard. The dashboard would show only an app-generated boolean status for each participating employee: Zone ON: the employee has voluntarily started a Focus Session Zone OFF: the employee has not started a Focus Session This status is generated by the Zone app itself. It is not derived from Screen Time usage data and does not indicate whether the employee actually attempted to use any restricted app or website. My questions are: Would this architecture be considered permitted individual device management for focus and productivity, even though the service is offered through an employer and the employer can see the Zone ON/OFF status? Or would the employer relationship and company dashboard make this prohibited use of Family Controls “in organizational settings”? If sharing the app-generated ON/OFF status with the employer is incompatible with the Family Controls terms, would the use be permitted if Family Controls operated entirely on-device and no Focus Session status or device information were sent to the employer? Is there another Apple-supported framework or architecture recommended for this use case? I understand that final entitlement approval and App Review decisions may depend on the submitted application. I am seeking architectural guidance before investing in implementation. Thank you.
Replies
0
Boosts
0
Views
137
Activity
2w
PushToTalk session sometimes returns silence data after activation
Hello! Thank you for bringing the new iPhone experience with the PushToTalk framework. I have a working walkie talkie app based on the PushToTalk framework. Everything works fine except for an intermittent bug that I face from time to time on different devices with different iOS versions, from iOS 18 to iOS 26.2 Beta. Sometimes the app goes into a state where the AVAudioInputNode input node tap returns buffers with a constant size that contain only silence. Leaving and rejoining a channel helps, but relaunching or reinstalling (from Xcode) the app does not. Rebooting the device or deleting and reinstalling the app also helps. I do not activate the audio session in my app. I only configure it on launch using setCategory(.playAndRecord, options: [.defaultToSpeaker, .allowBluetooth]) So the flow is: channelManager?.requestBeginTransmitting(channelUUID: globalChannelUUID) func channelManager( _ channelManager: PTChannelManager, channelUUID: UUID, didBeginTransmittingFrom source: PTChannelTransmitRequestSource ) func channelManager( _ channelManager: PTChannelManager, didActivate audioSession: AVAudioSession ) { /// ... installTapAndStart() } private func installTapAndStart() { let inputNode = audioEngine.inputNode let hardwareFormat = inputNode.outputFormat(forBus: 0) guard let targetFormat = AVAudioFormat( commonFormat: .pcmFormatFloat32, sampleRate: configuration.audioSampleRate, channels: configuration.audioChannelsCount, interleaved: true ) else { handleError(RecorderError.invalidAudioFormat) return } let converter = AVAudioConverter(from: hardwareFormat, to: targetFormat)! print("[QUICOpusRecorder]: installTap") inputNode.installTap(onBus: 0, bufferSize: tapBufferSize, format: hardwareFormat) { [weak self] buffer, _ in guard let self else { return } // Here I handle audio data and sometimes get silence } //... do { audioEngine.prepare() try audioEngine.start() } catch { print(" ⚠️ Audio engine start error: \(error)") handleError(error) } } Moreover, if the app is in the foreground and PushToTalk gets stuck in this “silence bug”, I can avoid relying on the PushToTalk flow and simulate audio session activation manually in code. In this case I do not request a transmission and do not use any PushToTalk related code, and the app captures audio data perfectly. Once I leave the channel and rejoin it again, the issue is fixed and I start to receive non silent buffers of varying size, as expected. It works for a while. It can work fine for a day or more, communicating without launching the app, or with the app in the foreground. But it can also go into the “silence” state 30 minutes after working normally. I have no clue why this happens. The only thing I notice is that when the app is in this “stuck silence bug” state, iOS does not play its “chirp” system sound when audio recording starts. P.S. Channel descriptor restoration code: extension PushToTalkEngine: PTChannelRestorationDelegate { public func channelDescriptor(restoredChannelUUID channelUUID: UUID) -> PTChannelDescriptor { print("☀️ \(#function) channelUUID: \(channelUUID)") Task { @MainActor in // Here I fetch more detailed channel data asynchronously do { await initChannelManagerIfNeeded(channelUUID: channelUUID) let channelDescriptor = currentChannelDescriptor() lastChannelDescriptorName = channelDescriptor.name try await channelManager?.setChannelDescriptor( channelDescriptor, channelUUID: channelUUID ) } catch { handleError(error) } } return PTChannelDescriptor(name: "Loading...", image: nil) } } private func initChannelManagerIfNeeded(channelUUID: UUID? = nil) async { guard let channelUUID = channelUUID ?? currentUser?.globalChannelUUID else { print("❌ No global channel uuid found") return } do { guard channelManager == nil else { try await channelManager?.setTransmissionMode(.halfDuplex, channelUUID: channelUUID) return } channelManager = try await PTChannelManager.channelManager( delegate: self, restorationDelegate: self ) try await channelManager?.setTransmissionMode(.halfDuplex, channelUUID: channelUUID) } catch { handleError(error) } }
Replies
4
Boosts
0
Views
1.3k
Activity
3w
provider(_:didActivate:) callback intermittently not triggered, causing widespread audio loss for users
Hi everyone, I am facing a critical issue where the CallKit provider delegate method provider(_:didActivate:) is intermittently not triggered. This occasionally results in a total loss of audio during some VoIP calls, while other calls work perfectly fine. Here is the sequence of steps I am currently implementing: Report Incoming Call: The app receives a VoIP push notification and reports the call using reportNewIncomingCall(with:update:completion:). Answer Action: The user taps the answer button, and the app processes the CXAnswerCallAction. Configure Audio Session: Inside the provider delegate, I configure the AVAudioSession category and mode (e.g., setting category to .playAndRecord and mode to .voiceChat). Note: As per Apple's guidelines, I do not call setActive(true) manually, expecting CallKit to activate it automatically. Despite following this standard flow, there are times when provider(_:didActivate:) is skipped entirely, meaning the audio engine fails to initialize for that specific call session. We are currently receiving a large volume of user complaints regarding this issue, as it heavily impacts the core calling experience in production. Could an Apple engineer or anyone from the community look into this? Any insights into what might be causing CallKit to occasionally fail to activate the audio session or how to work around this would be highly appreciated. Thank you!
Replies
5
Boosts
0
Views
941
Activity
3w
CallKit does not activate audio session with higher probability after upgrading to iOS 18.4.1
Hi, We've noticed that this issue occurs more frequently after upgrading to iOS 18.4.1 and can result in one-way audio. Our app uses CallKit with WebRTC to establish VoIP connections. However, on iOS 18.4.1, CallKit no longer triggers: func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) We're currently comparing the occurrence rate across different iOS versions to better understand the impact. Could you please help analyze the root cause of this issue?
Replies
38
Boosts
1
Views
4.4k
Activity
3w
Spotlight on finds title attribute (OS27 b3)
Hi, it seems that something in OS27b3 changed regarding Core Spotlight: Whatever I try, Siri and Spotlight only seem to find the text inside the title or displayName attribute. But attributes like textContent or contentDescription or keywords seem to be ignored. Those attributes are still found, when I do a manual search using CSUserQuery or using the AppEntityDefinition.spotlightQuery(_:) in App Intent Testing. I have already filed a Feedback – but wonder whether anyone else is having this issue? FB23635795 Thanks, Friedrich
Replies
4
Boosts
0
Views
716
Activity
3w
AlarmKit alarm occasionally fires at exactly 12:00 AM
[FB22327481] We are observing a rare issue where alarms scheduled using AlarmKit occasionally fire exactly at 12:00 AM, even though the alarm was scheduled for a different time. This issue happens only for a very small number of users (for example, 1–2 users per several thousand per day), but multiple reports confirm that the alarm goes off exactly at midnight. We also found that other developers are experiencing the same issue: https://developer.apple.com/forums/thread/815714 Observed behavior For a small number of users: Alarm fires at exactly 00:00 (midnight) This happens even when the scheduled alarm time is something like 7:30 AM Happens rarely Hard to reproduce internally Appears to happen only on real devices in production Additional notes We are using AlarmKit fixed schedules (not relative) Dates passed to AlarmKit are correct at scheduling time We do not intentionally create midnight alarms Issue seems random Question Are there any known limitations or edge cases with AlarmKit fixed schedules that could cause alarms to fire at midnight? For example: Invalid date fallback? Schedule expiration fallback? Time zone changes? Background refresh timing? Maximum schedule window? Any guidance would be appreciated, as this is affecting real users but is difficult to reproduce.
Replies
5
Boosts
1
Views
943
Activity
3w
App Clip card not shown for links in Messages despite passing every documented check
We ship an App Clip with our iOS app and want the App Clip card to appear when users share our website's links in Messages. Instead, recipients only get a plain link preview. The App Clip was approved and has been live on the App Store for over a week. We've verified every requirement from the docs ("Associating your App Clip with your website" and the Messages invocation requirements): The invocation page's server-rendered HTML (no JS needed) contains the meta tag: apple-itunes-app with app-id and app-clip-bundle-id set correctly. /.well-known/apple-app-site-association has an "appclips" section listing the clip's app ID, and Apple's AASA CDN (app-site-association.cdn-apple.com/a/v1/) serves the same content. The App Clip's entitlements include appclips: and the correct parent application identifier. Via the App Store Connect API, the currently live build contains the APP_CLIP build bundle, and the live version has a default App Clip experience (action OPEN, with localizations). The default experience link https://appclip.apple.com/id?p= returns 200 and shows the clip. Tested in Messages between two devices whose owners are in each other's contacts, in brand-new conversations, on current iOS. However, on-device App Clip diagnostics (Settings > Developer > App Clips Testing > Diagnostics) for the invocation URL show the "App Clip Published on App Store" and "Associated Domains" checks not passing, even though everything above is verified correct. ("No Advanced Experience registered" also appears, but as we understand it advanced experiences are only needed for QR/NFC/App Clip Codes, not Messages.) Has anyone seen device-side association fail like this when the server-side config is demonstrably correct? Is there a known propagation delay after releasing a new app version, or a way to force the device to refresh its App Clip association cache beyond rebooting? Any pointers on what the diagnostics tool checks that isn't covered by the list above would be appreciated.
Replies
1
Boosts
0
Views
180
Activity
3w
Callkit returns error code=106 which is not on official document
Callkit returns error code=106. I can't find what this error code means in official documents. What is this error code? Has anybody seen this error code so far? My app is VoIP app using APNs VoIP push. Below is log example of my app. 2026/04/26 09:01:45.752 [436:103]CallManager incomingCall(::::_:completion:):228: error Error Domain=com.apple.CallKit.error.incomingcall Code=106 "(null)"
Replies
1
Boosts
0
Views
253
Activity
3w
Quick Look no longer invokes third-party Markdown preview extensions on iOS 27
On iOS 26, Quick Look invokes an installed data-based Quick Look preview extension for .md files resolved as net.daringfireball.markdown, and the extension renders the Markdown correctly. On iOS 27, the same document and the same installed extension no longer work. Quick Look still resolves the file as net.daringfireball.markdown, but it does not invoke the extension and instead displays the raw Markdown source using the generic plain-text preview. The extension subclasses QLPreviewProvider, has QLIsDataBasedPreview enabled, and includes net.daringfireball.markdown in QLSupportedContentTypes. As a control, the same installed extension correctly launches and renders equivalent document content when it is presented through a custom Uniform Type Identifier. This confirms that the extension is embedded, installed, and otherwise invocable; the failure is specific to Quick Look's provider selection for Markdown on iOS 27. Reproduction: Install an app containing the data-based preview extension described above. On iOS 26, open an .md document in Quick Look and observe that the extension is launched and renders the Markdown. On iOS 27, open the same document with the same extension installed. I reproduced this through Files, although the issue concerns Quick Look provider selection rather than Files-specific behavior. Observe that the extension is not launched and the raw Markdown source is shown. Open an equivalent document registered with a custom content type supported by the same extension. Observe that Quick Look launches the extension and displays the rendered preview. The attached screenshots show the same Markdown case rendered by QuickMark on iOS 26 and falling back to plain text on iOS 27. Is there a supported way for a third-party preview extension to handle net.daringfireball.markdown on iOS 27, or is this an unintended provider-selection regression? Tested with iOS 27.0 (24A5408d) on an iPhone 17 Pro Max Simulator using Xcode 27.0 (27A5237l). Feedback filed as FB24481377.
Replies
1
Boosts
0
Views
121
Activity
3w
Live Caller ID Lookup Extension - No option in phone settings
iOS 18 (22A3354) will not offer a option in settings (> Apps > Phone) after calling openSettings to enable live caller id lookup extension. iPhone and MacBook are in the same network. The PIRService runs on MacBook and is reachable via iPhone Safari (via http://MacBookPro:8080/). Hummingbird print log: hb_method=GET hb_uri=/ [Hummingbird] Request. After deploying the application via Xcode to the iPhone no requests are printed in the terminal. The extension was added like documented and bundle id is also checked multiple times. issuerRequestUri in service-config.json is http://MacBookPro:8080/issue. As far as I can tell, everything has been set up in accordance with the Testing Live Caller ID instructions. Is there something missing?
Replies
10
Boosts
0
Views
2k
Activity
3w
iOS 26.2 RC DeviceActivityMonitor.eventDidReachThreshold regression?
Hi there, Starting with iOS 26.2 RC, all my DeviceActivityMonitor.eventDidReachThreshold get activated immediately as I pick up my iPhone for the first time, two nights in a row. Feedback: FB21267341 There's always a chance something odd is happening to my device in particular (although I can't recall making any changes here and the debug logs point to the issue), but just getting this out there ASAP in case others are seeing this (or haven't tried!), and it's critical as this is the RC. DeviceActivityMonitor.eventDidReachThreshold issues also mentioned here: https://developer.apple.com/forums/thread/793747; but I believe they are different and were potentially fixed in iOS 26.1, but it points to this part of the technology having issues and maybe someone from Apple has been tweaking it.
Replies
31
Boosts
8
Views
7.3k
Activity
3w
App Icon Does Not Update to the Latest Default Icon on Some iOS Devices After App Update
Environment Platform: iOS iOS versions tested: : 26.5.2, 26.5 Xcode: 26.3 Language: Swift UI framework: SwiftUI App distribution: App Store Device models tested: : iPhone 17, iPhone 16, iPhone 15 pro max, iPhone 17 pro max Issue We are experiencing an issue where the app icon does not update to the latest app icon after an app update on some devices. Initially, our app used Apple's alternate app icon functionality through setAlternateIconName to dynamically change the app icon. However, we observed that the alternate icon was not being updated correctly on some devices. As it was not working , we removed the alternate icon approach and changed the primary/default app icon in the application itself. We then submitted an updated app version with the new default icon. After updating the app, the new app icon is displayed correctly on some devices, but on some other devices the previous/old app icon continues to be displayed, even though the app has been successfully updated to the latest version. The issue appears to be device-specific, as the same app version can display the new icon on one device while continuing to display the old icon on another device. Expected Behavior After installing an app update containing a new default app icon, the new app icon should be displayed on the Home Screen and in relevant system locations such as Shortcuts. Actual Behavior On some devices, after successfully updating the application to the new version, the old app icon continues to be displayed. The application itself is updated successfully and launches normally. The issue is specifically with the icon displayed by the system. Steps to Reproduce Install an older version of the application containing the old app icon. Update the application to a newer version where the default/primary app icon has been changed. Verify that the application has been updated to the latest version. Return to the Home Screen. Observe the application icon. If applicable, check the application icon in the Shortcuts interface. Expected: The new app icon is displayed. Actual: On some devices, the previous app icon is still displayed. Additional Observations We observed different behaviors on affected devices: On one affected device, the old icon remained after the app update but changed to the new icon after restarting the device. On another affected device, the icon changed to the new icon after some time without reinstalling the application. However, on that device, the old icon continued to be displayed in the Shortcuts interface even after the Home Screen icon had changed to the new icon. Reinstalling the application causes the new icon to appear correctly. These observations make the behavior appear to be related to how iOS refreshes or caches application icons after an app update. Additional Information We initially attempted to use Apple's alternate app icon functionality through setAlternateIconName. The alternate icon approach did not update the icon consistently across all tested devices. We therefore changed the application's default/primary icon instead of relying on alternate icons. The issue still occurs on some devices even after changing the default app icon. The application itself functions normally after the update; only the displayed app icon remains unchanged on the affected devices. The issue appears to occur specifically with updating an existing installation rather than installing the application for the first time. Questions Is there any known iOS behavior where the previous Home Screen icon can remain cached after an app update? Is there a recommended way to ensure that iOS refreshes the Home Screen icon after changing the default app icon? Could this behavior be related to the previous use of alternate app icons through setAlternateIconName? Why might the Home Screen icon update after a restart or after some time while the icon shown in Shortcuts continues to display the previous icon? Are there any specific requirements for CFBundleIcons, asset catalogs, Info.plist, or other configuration that we should verify when changing the primary app icon? Is this a known issue on any specific iOS versions or device configurations? We would appreciate any guidance on whether this is expected iOS behavior, an icon caching issue, or if there is something specific we should change in our application configuration.
Replies
2
Boosts
0
Views
177
Activity
3w
iOS 27 Public Beta - CoreBluetooth disconnects during BLE credential send open command to access control readers
Hello Apple Developer Team, We are observing a BLE connectivity issue in our application BlueDiamond Mobile Elite after upgrading devices to iOS 27 Public Beta. Environment App: BlueDiamond Mobile Elite Platform: iOS 27 Public Beta Framework: CoreBluetooth Device Type: iPhone BLE Peripheral: Access control/BLE reader Testing Status: BLE scanning works correctly. Reader discovery works correctly. Connection establishment succeeds. Service and characteristic discovery complete successfully. Issue occurs during credential transmission. Problem Description After connecting to a BLE reader, our application sends mobile credentials to the reader using CoreBluetooth. The workflow is: Scan for BLE readers. Discover target reader. Connect to reader. Discover services and characteristics. Start credential transfer. BLE connection disconnects unexpectedly during or immediately after the credential write operation. The disconnect occurs before the credential transaction completes successfully. Observed Behavior BLE scanning is functioning normally on iOS 27 Public Beta. The reader is discovered without issues. Connection is established successfully. Credential provisioning/credential write operation triggers the problem. centralManager(_:didDisconnectPeripheral:error:) is invoked after the credential transfer attempt. The credential is not successfully delivered to the reader. Expected Behavior The BLE connection should remain active throughout the credential provisioning process and disconnect only after the transaction is completed or when explicitly terminated by the application. Additional Information The same credential issuance flow worked correctly on previous iOS versions. We have already addressed another iOS 27 compatibility issue related to QR code access by updating to Apple's recommended APIs. We are currently investigating whether the BLE disconnection is caused by: Changes in CoreBluetooth behavior in iOS 27 Public Beta. MTU/write packet handling. Write-with-response versus write-without-response behavior. Peripheral firmware compatibility. Credential payload size or transfer timing. Questions Are there any known CoreBluetooth regressions or behavior changes in iOS 27 Public Beta related to characteristic writes or BLE credential provisioning? Has anyone observed unexpected peripheral disconnects during write operations on iOS 27 Public Beta? Are there any recommended changes for applications performing secure credential transfers to BLE peripherals? Any guidance would be greatly appreciated.
Replies
1
Boosts
0
Views
911
Activity
3w
DeclaredAgeRange API not triggering in regulated regions (Brazil, Utah) — Is it functioning in production?
Hi, We've implemented age assurance logic in our app using the DeclaredAgeRange framework to comply with regulations in Brazil (Digital ECA, effective March 17, 2026) and Utah (App Store Accountability Act, effective May 6, 2026). Our implementation calls AgeRangeService.shared.isEligibleForAgeFeatures on app launch to determine whether the current user is subject to age assurance requirements, and proceeds to call requestAgeRange(ageGates:) accordingly. However, after monitoring in production since the Brazil enforcement date, we've consistently observed isEligibleForAgeFeatures returning false for users in regulated regions, with no age range data being returned. What we'd like to clarify: Is isEligibleForAgeFeatures currently returning true for users in Brazil in production (not sandbox)? For Utah — given that HB 498 pushed the developer compliance deadline to May 6, 2027, will isEligibleForAgeFeatures reflect the original May 6, 2026 activation date or the revised 2027 date? Is there a known rollout schedule or gradual activation plan for these regions that would explain why the flag remains false even after the legal enforcement dates have passed? We've seen similar reports from other developers on these forums, so it seems this may be a widespread issue rather than an implementation problem on our end. Any official guidance on the current status of the API in regulated regions would be greatly appreciated. Thanks.
Replies
2
Boosts
1
Views
1.3k
Activity
4w