When my Bluetooth peripheral device has both HID and MIDI services, the iOS Bluetooth host repeatedly sends different "Control Opcode: LL_CONNECTION_UPDATE_IND" to the peripheral, updating approximately every 100ms.
The Bluetooth peripheral cannot handle such high-frequency update requests and typically disconnects with an error 0x28. My Bluetooth device uses the NRF52832 chip, and I have communicated with NORDIC and replicated this issue.
This problem only occurs on iOS 26; it does not happen on earlier versions. I think it might be caused by the HID service in iOS requesting faster connection parameters for low latency, which then gets erroneously reverted for an unknown reason, leading to repeated competition and entering into a deadlock.
Here is the communication record with NORDIC: https://devzone.nordicsemi.com/f/nordic-q-a/124994/ios-26-bluetooth-disconnect-issues
This is the screenshot captured using the Bluetooth sniffer:
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
I have the main app that saves preferences to UserDefaults.standard. So I have this one preference that the user is able to toggle - isRawOn
UserDefaults.standard.set(self.isRawOn, forKey: "isRawOn")
Now, I have LockedCameraCaptureExtension which is required know if that above setting on or off during launch. Also if it's toggled within the extension, the main app should know about it on the next launch.
The main app and the extension runs on separate containers and the preferences are not shared due to privacy reasons.
Apple mentions of using appContext of CameraCaptureIntent, but not sure how above scenario is possible through that....unless I am missing something.
Apple Reference
What I have for CameraCaptureIntent:
@available(iOS 18, *)
struct LaunchMyAppControlIntent: CameraCaptureIntent {
typealias AppContext = MyAppContext
static let title: LocalizedStringResource = "LaunchMyAppControlIntent"
static let description = IntentDescription("Capture photos with MyApp.")
@MainActor
func perform() async throws -> some IntentResult {
.result()
}
}
Topic:
Media Technologies
SubTopic:
Photos & Camera
Tags:
iOS
Photos and Imaging
PhotoKit
AVFoundation
I am using a Raspberry Pi 5 (BLE 5.0) to read sensor data and send it via D-Bus and BlueZ to a Flutter application (flutter_blue_plus) for both iOS and Android. The goal is to display these real-time sensor updates directly on the device.
On Android, the data transmission is immediate and the real-time visualization is extremely smooth and fast. However, on iOS, both BLE write and notification commands appear with noticeable latency—not only in real-time displays, but also when comparing ordinary notification feedback between the Raspberry Pi terminal and the iOS app. It seems that iOS buffers several BLE packets internally and then dispatches them in batches, which always introduces an additional delay.
Additional setup details:
I sample and transmit data every 25ms, sending binary packets of 20 bytes (length shouldn’t be a limiting factor).
On the iOS side I am using an iPhone 15 Pro with iOS 18.6.2 (BLE 5.3).
The Raspberry Pi (using btmon for logging) confirms after connection setup that the connection interval is fixed at 30ms (and cannot be changed).
I have tried sending BLE packets every 30ms so that exactly one packet arrives per interval, but this made no difference—the latency and batch delivery remain.
Interestingly, faster transmission rates (e.g. sending every 10ms) make the real-time display look smoother on iOS, but the guaranteed overall system latency does not improve.
Also these methods used: write-without-response, using app in release modus (no debugging)
Is there anyone familiar with this problem or a potential solution?
Or is iOS simply not optimized for true real-time BLE data streaming and visualization?
Any pointers, technical insights or workarounds would be greatly appreciated.
Topic:
App & System Services
SubTopic:
Core OS
Tags:
IOBluetooth
iOS
Playground Bluetooth
Core Bluetooth
Hello,
I understand that to discover and pair a device or accessory with Wi-Fi Aware, we can use either the DeviceDiscoveryUI or AccessorySetupKitUI frameworks. During the pairing process, both frameworks prompt the user to enter a pairing code. Is this step mandatory?
What alternatives exist for devices or accessories that don't have a way to communicate a pairing code to the user (for example, devices or accessories without a display or voice capability)?
Best regards,
Gishan
Topic:
App & System Services
SubTopic:
Networking
Tags:
iOS
Network
DeviceDiscoveryUI
AccessorySetupKit
iPhone12 , iOS26 NFCTagReaderSession cannot read NFCTagTypeISO7816Compatible anymore
I’m developing an app that includes a navigation bar with a centered title and a single right bar button item. I’ve noticed that when both the navigation bar title and the right bar button item’s title are relatively long, the navigation bar title becomes hidden.
This issue only occurs on iOS 26. When running the same code on iOS 18, the layout behaves as expected, with both elements visible.
Has anyone else experienced this behavior on iOS 26? Is this a known layout change or a possible bug?
Good day,
I've uploaded a build to TestFlight, but received an automated response with the following error:
ITMS-90426: Invalid Swift Support - The SwiftSupport folder is missing. Rebuild your app using the current public (GM) version of Xcode and resubmit it.
Our project started in Objective-C and have mixed swift class and pods. The last uploaded build without any automated response was Nov 8, 2023.
I'm using XCode Version 26.0.1 (17A400). I've tried every way i found in internet and i'm not able to find any solution for this.
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
use_frameworks! :linkage => :dynamic (in pods)
We would appreciate any assistance in clarifying why this issue is occurring and how we should proceed to address it. Your guidance would mean a lot.
Thank you.
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight
Tags:
Swift Packages
App Store
iOS
App Submission
I would like to know whether BGContinuedProcessingTaskRequest supports executing asynchronous tasks internally, or if it can only execute synchronous tasks within BGContinuedProcessingTaskRequest?
Our project is very complex, and we now need to use BGContinuedProcessingTaskRequest to perform some long-running operations when the app enters the background (such as video encoding/decoding & export). However, our export interface is an asynchronous function, for example video.export(callback: FinishCallback). This export call returns immediately, and when the export completes internally, it calls back through the passed-in callback. So when I call BGTaskScheduler.shared.register to register a BGContinuedProcessingTask, what should be the correct approach? Should I directly call video.export(nil) without any waiting, or should I wait for the export function to complete in the callback?
For example:
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.xxx.xxx.xxx.xxx", using: nil) { task in
guard let continuedTask = task as? BGContinuedProcessingTask else {
task.setTaskCompleted(success: false)
return
}
let scanner = SmartAssetsManager.shared
let semaphore = DispatchSemaphore(value: 0)
continuedTask.expirationHandler = {
logError(items: "xwxdebug finished.")
semaphore.signal()
}
logInfo(items: "xwxdebug start!")
video.export { _ in
semaphore.signal()
}
semaphore.wait()
logError(items: "xwxdebug finished!")
}
In the Keynote/Numbers/Pages apps for iPhone, there is a Help menu item for presenting a Help modal view.
The view has a button for showing the hierarchical table of contents, and a field for searching the Help pages.
How is such a Help modal view built through SwiftUI ?
In which format is the Help content stored ?
Hi,
We began to get this new crash in codes that exist years ago from our recent released version, it crashed after a view removed itself from superview.
We tried to look at the assembly code of NSISSparseVectorAddTermWithPlaceValueCoefficientStartingIndex, find out that d0 <= 0 would branch to NSISSparseVectorAddTermWithPlaceValueCoefficientStartingIndex.cold.1.
We believe that it's related with Autolayout, but setting a negative value for width or height constraints can't reproduce this crash.
Here is the crash log
Exception Type: NSInternalInconsistencyException Invalid parameter not satisfying: placeValue > 0
Exception Codes: fault addr: (null)
Crashed Thread: 0
0 CoreFoundation ___exceptionPreprocess + 164
1 libobjc.A.dylib _objc_exception_throw + 88
2 Foundation -[NSMutableDictionary(NSMutableDictionary) initWithContentsOfFile:] + 0
3 CoreAutoLayout NSISSparseVectorAddTermWithPlaceValueCoefficientStartingIndex.cold.1 + 100
4 CoreAutoLayout _NSISSparseVectorAddTermWithPlaceValueCoefficientStartingIndex + 848
5 CoreAutoLayout _NSISSparseVectorAddVectorTimesScalar + 72
6 CoreAutoLayout -[NSISObjectiveLinearExpression replaceVar:withExpression:processVarNewToReceiver:processVarDroppedFromReceiver:] + 200
7 CoreAutoLayout ____substituteOutAllOccurencesOfBodyVar_block_invoke + 504
8 CoreAutoLayout __substituteOutAllOccurencesOfBodyVar + 340
9 CoreAutoLayout __pivotToMakeColNewHeadOfRow + 960
10 CoreAutoLayout -[NSISEngine removeConstraintWithMarker:] + 748
11 CoreAutoLayout -[NSLayoutConstraint _removeFromEngine:] + 140
12 UIKitCore ___57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke + 164
13 CoreAutoLayout -[NSISEngine withBehaviors:performModifications:] + 84
14 UIKitCore -[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:] + 212
15 UIKitCore ___57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke_2 + 148
16 UIKitCore ___57-[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:]_block_invoke + 544
17 CoreAutoLayout -[NSISEngine withBehaviors:performModifications:] + 84
18 UIKitCore -[UIView(AdditionalLayoutSupport) _switchToLayoutEngine:] + 212
19 UIKitCore ___45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 84
20 CoreAutoLayout -[NSISEngine withBehaviors:performModifications:] + 84
21 UIKitCore -[UIView _postMovedFromSuperview:] + 512
22 UIKitCore ___UIViewWasRemovedFromSuperview + 136
23 UIKitCore -[UIView(Hierarchy) removeFromSuperview] + 244
Assembly of NSISSparseVectorAddTermWithPlaceValueCoefficientStartingIndex
CoreAutoLayout`NSISSparseVectorAddTermWithPlaceValueCoefficientStartingIndex:
-> 0x1ec1a2124 <+0>: pacibsp
0x1ec1a2128 <+4>: stp d11, d10, [sp, #-0x60]!
0x1ec1a212c <+8>: stp d9, d8, [sp, #0x10]
0x1ec1a2130 <+12>: stp x24, x23, [sp, #0x20]
0x1ec1a2134 <+16>: stp x22, x21, [sp, #0x30]
0x1ec1a2138 <+20>: stp x20, x19, [sp, #0x40]
0x1ec1a213c <+24>: stp x29, x30, [sp, #0x50]
0x1ec1a2140 <+28>: add x29, sp, #0x50
0x1ec1a2144 <+32>: mov x19, x1
0x1ec1a2148 <+36>: fmov d9, d2
0x1ec1a214c <+40>: fmov d10, d1
0x1ec1a2150 <+44>: fmov d8, d0
0x1ec1a2154 <+48>: mov x20, x0
0x1ec1a2158 <+52>: fcmp d0, #0.0
0x1ec1a215c <+56>: b.le 0x1ec1a2470 ; <+844>
0x1ec1a2160 <+60>: fcmp d10, #0.0
0x1ec1a2164 <+64>: adrp x8, 112778
....
0x1ec1a2468 <+836>: ldp d11, d10, [sp], #0x60
0x1ec1a246c <+840>: retab
0x1ec1a2470 <+844>: bl 0x1ec1cac18 ; NSISSparseVectorAddTermWithPlaceValueCoefficientStartingIndex.cold.1
0x1ec1a2474 <+848>: b 0x1ec1a2160 ; <+60>
Hi everyone 👋
I’m running into a persistent SSL issue on iOS where the app fails to establish a secure HTTPS connection to our backend APIs.
The same endpoints work fine on Android and web, but on iOS the requests fail with:
Error Domain=NSURLErrorDomain Code=-1200
"An SSL error has occurred and a secure connection to the server cannot be made."
UserInfo={
NSLocalizedDescription = "An SSL error has occurred and a secure connection to the server cannot be made.";
_kCFStreamErrorDomainKey = 3;
_kCFStreamErrorCodeKey = -9802;
}
🔍 What I’ve Checked:
The servers use valid, trusted SSL certificates from a public CA
TLS 1.2 and 1.3 are enabled
The intermediate certificates appear correctly configured (verified using SSL Labs)
The issue happens on our customer's end. (Got it via Sentry)
Note: We recently removed NSAppTransportSecurity(NSAllowsArbitraryLoads) on our app, since all the endpoints use valid HTTPS certificates and standard configurations.
❓ Questions:
Are there additional SSL validation checks performed by iOS when ATS is enabled?
Has anyone seen similar behaviour, where valid certificate chains still trigger SSL errors?
Any insights or debugging suggestions would be greatly appreciated 🙏
iphone 15 pro max
ios 26
Stuck at the developer mode startup interface and unable to swipe up.
In what scenario will an app receive the limitExceeded PHPhotosError code? This case was added in iOS 26.1 and is not currently documented. What PhotoKit APIs can encounter this error and how should it be handled?
Hello,
When using ASWebAuthenticationSession with an HTTPS callback URL (Universal Link), I receive the following error:
Authorization error: The operation couldn't be completed.
Application with identifier jp.xxxx.yyyy.dev is not associated with domain xxxx-example.go.link.
Using HTTPS callbacks requires Associated Domains using the webcredentials service type for xxxx-example.go.link.
I checked Apple’s official documentation but couldn’t find any clear statement that webcredentials is required when using HTTPS callbacks in ASWebAuthenticationSession.
What I’d like to confirm:
Is webcredentials officially required when using HTTPS as a callback URL with ASWebAuthenticationSession?
If so, is there any official documentation or technical note that states this requirement?
Environment
iOS 18.6.2
Xcode 16.4
Any clarification or official references would be greatly appreciated.
Thank you.
Topic:
Privacy & Security
SubTopic:
General
Tags:
iOS
Security
Authentication Services
Universal Links
Dear App Review Team,
We are respectfully requesting an expedited review for our app,Tonomy ID, (Submission ID
: 0635f631-10d4-49fb-a9d6-bc3dab197624
, Version: 2.2.5).
The app has been in the review state since [Last Thursday's Date, e.g., October 23th].
We have a scheduled, public launch set for today, [Today's Date, e.g., October 28th]. The release of this version is critical for a coordinated go-live announcement that has been communicated to our users. A delay in approval would directly impact the success of this launch and our business commitments.
We have ensured the app meets all App Store Review Guidelines and are ready to immediately address any questions you may have.
Thank you for your time and consideration. We greatly appreciate your support in helping us meet this critical deadline.
Thank you,
Hello,
I have a question about data deserialization using NSKeyedUnarchiver in iOS SDK development.
Current Situation:
Previously, we were using the NSKeyedUnarchiver.unarchiveObject(with: Data) function
We have changed to using the NSKeyedUnarchiver.unarchivedObject(ofClasses:from:) method to deserialize complex objects stored in UserDefaults
We need to include all types in the ofClasses parameter, including Swift primitive types as well as various custom classes and structs within the project
Questions:
Implementation Approach: Is it correct pattern to include all classes defined in the project in the ofClasses array? Is this approach recommended?
Runtime Stability: When using this approach, is there a possibility of runtime crashes? Are there any performance issues?
Alternative Methods: If the current approach is not the correct pattern, what alternatives should we consider?
Current Code Structure:
All model classes conform to the NSSecureCoding protocol
We use the requiringSecureCoding: true parameter
We use a whitelist approach, explicitly listing only allowed classes
I would like to know if this structure is appropriate, or if we should consider a different approach.
Thank you.
On iOS 18 and lower version, my application supports automatically switching to [System settings - Personal Hotspot] directly. But on iOS 26, my application will be redirected to [System settings- Apps].
Does iOS 26 disable the behavior of directly jumping to the system hotspot page? If support, could you share the API for iOS 26?
Problem Description
I am using CLLocationManager to obtain the device's compass heading (direction), and I have encountered an abnormal behavior:
When the user is stationary: After calling startUpdatingHeading(), the CLHeading object returned in the locationManager(_:didUpdateHeading:) callback correctly reflects the device’s actual physical orientation (i.e., the direction the top of the device is pointing) in terms of magnetic north / true north, via the magneticHeading and trueHeading properties. When I rotate the device, the heading values change accordingly — this is the expected behavior.
But when the user is in motion (e.g., driving a car): Even if I rotate the device, the values of magneticHeading and trueHeading no longer reflect the device’s actual orientation. Instead, they consistently return what appears to be the user's or vehicle's travel direction (forward direction). In other words, the compass behaves as if it is reporting the direction of motion rather than the device’s actual facing direction.
Only after the user has completely stopped moving, does rotating the device again result in magneticHeading and trueHeading reflecting the actual device orientation as expected.
However, on another device running iOS 16 (iPhone XR), this behavior does not occur — everything works normally.
Expected Behavior
I expect that regardless of whether the user is moving or not, the CLHeading values returned by CLLocationManager should always represent the physical orientation of the device itself (i.e., which direction the top of the device is pointing), as a standard compass should.
Actual Behavior
User is stationary, rotating the device: magneticHeading / trueHeading change properly according to the device’s actual orientation
User is in motion (e.g., driving):magneticHeading / trueHeading remain fixed to the direction of motion (travel direction), and do not change when the device is rotated
User stops moving, then rotates the device:Compass behaves normally again, reflecting the actual device orientation
Environment Information
iOS Version: iOS 26.0.1
Device Models: iPhone 15 Pro / iPhone 17 Pro
Xcode Version: Xcode 26.0.1
Language: Objective-C
Questions
Is this a known issue in iOS? Are there any related radars or official documentation about it?
Have other developers encountered similar issues, especially where CLHeading behaves incorrectly when the user is in motion?
Do I need to set any specific parameters in CLLocationManager (such as headingOrientation) to resolve or work around this issue?
🙏 Thank you for your help — any insights, experiences, or official feedback regarding this issue would be greatly appreciated!
I’m really frustrated with iOS 26. It was supposed to make better use of screen space, but when you combine the navigation bar, tab bar, and search bar, they eat up way too much room.
Apple actually did a great job with the new tab bar — it’s smaller, smooth, and looks great when expanding or collapsing while scrolling. The way the search bar appears above the keyboard is also really nice.
But why did they keep the navigation bar the same height in both portrait and landscape? In landscape it takes up too much space and just looks bad. It was way better in iOS 18.
Context
I’m deploying large language models on iPhone using llama.cpp. A new iPhone Air (12 GB RAM) reports a Metal MTLDevice.recommendedMaxWorkingSetSize of 8,192 MB, and my attempt to load Llama-2-13B Q4_K (~7.32 GB weights) fails during model initialization.
Environment
Device: iPhone Air (12 GB RAM)
iOS: 26
Xcode: 26.0.1
Build: Metal backend enabled llama.cpp
App runs on device (not Simulator)
What I’m seeing
MTLCreateSystemDefaultDevice().recommendedMaxWorkingSetSize == 8192 MiB
Loading Llama-2-13B Q4_K (7.32 GB) fails to complete. Logs indicate memory pressure / allocation issues consistent with the 8 GB working-set guidance.
Smaller models (e.g., 7B/8B with similar quantization) load and run (8B Q4_K provide around 9 tokens/second decoding speed).
Questions
Is 8,192 MB an expected recommendedMaxWorkingSetSize on a 12 GB iPhone?
What values should I expect on other 2025 devices including iPhone 17 (8 GB RAM) and iPhone 17 Pro (12 GB RAM)
Is it strictly enforced by Metal allocations (heaps/buffers), or advisory for best performance/eviction behavior?
Can a process practically exceed this for long-lived buffers without immediate Jetsam risk?
Any guidance for LLM scenarios near the limit?