Does anyone know where I can get to the API diffs for iOS 18 -> iOS 26?
Posts under iOS tag
200 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I have a map view that is presented as a modal in a navigation bar with a title view. The navigation bar is completely transparent in iOS 26 and the bar button items are displayed with a glassy effect. Since there is no soft edge effect, like we have on scroll views, it can be hard to read the text in the title view.
Is there a way to get the soft edge effect on a map view that has a navigation bar? Not sure if I'm missing something obvious.
Say I have a UI element that moves on the screen. Is it possible to update its accessibility frame as it moves while VoiceOver is focused on it? From my tests, VoiceOver ignores UIAccessibilityLayoutChangedNotification if it's sent repeatedly in a short period of time on iOS, while sending NSAccessibilityLayoutChangedNotification on macOS triggers VoiceOver to reannounce the focused element repeatedly.
I have an app that uses NSPersistentCloudKitContainer stored in a shared location via App Groups so my widget can fetch data to display. It works. But if you reset your iPhone and restore it from a backup, an error occurs:
The file "Name.sqlite" couldn't be opened. I suspect this happens because the widget is created before the app's data is restored. Restarting the iPhone is the only way to fix it though, opening the app and reloading timelines does not. Anything I can do to fix that to not require turning it off and on again?
In iOS 26 there is a new way of displaying action sheets from the buttons that triggers them. I figured out that in SwiftUI you can just set the confirmationDialog view modifier on the button that triggers it.
However, I can't find a way to get this behavior in UIKit when a UIButton triggers an alert. Has anyone got this work?
The behavior is mentioned briefly in the "Get to know the new design system" session.
We are testing our existing live build, which was prepared with Xcode 16.2, on iOS 26 beta for experience assurance and found that the [[UIDevice currentDevice] systemVersion] API is returning iOS 19 instead of the expected version iOS 26. Has anyone else observed this issue?
Hi Everyone. I wanna run the live activity in terminated state. I have implemented the push notification flow which is working fine in foreground and background state. In the terminated state, the push to start token is not getting generated. How to make it work?
Hi everyone,
I’m working on an iOS project where an iPhone needs to connect to external scanners (dedicated hardware devices) over Wi-Fi. The goal is to:
Discover available Wi-Fi networks from the scanner devices (broadcasting their own networks).
Allow the user to seamlessly connect to the chosen scanner network.
Network Discovery:
Is there a way to programmatically list available Wi-Fi networks (SSIDs) on iOS without private APIs?
If not, are there workarounds (e.g., Bonjour/mDNS)?
Seamless Connection:
As I see, we can use NEHotspotConfigurationManager to connect to and disconnect from specified networks and there will always be a system alert asking about do we really want to join this network
Hardware/Firmware/Software Alternatives:
If iOS restrictions prevent this, what alternatives exist? For example:
Hardware: Scanners supporting Bluetooth LE for initial pairing, then Wi-Fi provisioning.
Firmware: Scanners acting as clients on the same network as the iPhone (e.g., via user’s home/office Wi-Fi).
Software: A companion app for the scanner that shares network credentials via QR code/NFC, or a local web server on the scanner for setup.
Context:
Target: iOS 16+
No jailbreaking; App Store compliance is a must.
Scanners can be configured to act as APs or clients.
I have an AppIntent that edits an object in my app. The intent accepts an app entity as a parameter, so if you run the intent it will ask which one do you want to edit, then you select one from the list and it shows a dialog that it was edited successfully. I use this same intent in my Home Screen widget initializing it with an objectEntity. The code needs to run in the app's process, not the widget extension process, so the file is added to both targets and it conforms to ForegroundContinuableIntent, and that is supposed to ensure it always runs in the app process. This works great when run from the Shortcuts app and when involved via a button in the Home Screen widget, exactly as expected. Here is that app intent:
@available(iOS 17.0, *)
struct EditObjectIntent: AppIntent {
static let title: LocalizedStringResource = "Edit Object"
@Parameter(title: "Object", requestValueDialog: "Which object do you want to edit?", inputConnectionBehavior: .connectToPreviousIntentResult)
var objectEntity: ObjectEntity
init() {
print("INIT")
}
init(objectEntity: ObjectEntity) {
self.objectEntity = objectEntity
}
@MainActor
func perform() async throws -> some IntentResult & ReturnsValue<ObjectEntity> & ProvidesDialog {
// Edit the object from objectEntity.id...
return .result(value: objectEntity, dialog: "Done")
}
}
@available(iOS 17.0, *)
@available(iOSApplicationExtension, unavailable)
extension EditObjectIntent: ForegroundContinuableIntent { }
I now want to create a ControlButton that uses this intent:
struct EditObjectControlWidget: ControlWidget {
var body: some ControlWidgetConfiguration {
StaticControlConfiguration(kind: "EditObjectControlWidget") {
ControlWidgetButton(action: EditObjectIntent()) {
Label("Edit Object", systemImage: "pencil")
}
}
}
}
When I add the button to Control Center and tap it (on iOS 18), init is called 3x in the app process and 2x in the widget process, yet the perform function is not invoked in either process. No error appears in console logs for the app's process, but this appears for the widget process:
LaunchServices: store <private> or url <private> was nil: Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=72, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler}
Attempt to map database failed: permission was denied. This attempt will not be retried.
Failed to initialize client context with error Error Domain=NSOSStatusErrorDomain Code=-54 "process may not map database" UserInfo={NSDebugDescription=process may not map database, _LSLine=72, _LSFunction=_LSServer_GetServerStoreForConnectionWithCompletionHandler}
What am I doing wrong here? Thanks!
Topic:
App & System Services
SubTopic:
Widgets & Live Activities
Tags:
iOS
SwiftUI
WidgetKit
App Intents
I'm creating an App that can accepted PDFs from a shared context.
I am using iOS, Swift, and UIKit with IOS 17.1+
The logic is:
get the context
see who is sending in (this is always unknown)
see if I can open in place (in case I want to save later)
send the URL off to open the (PDF) document and
load it into PDFKit's pdfView.document
I have no trouble loading PDF docs with the file picker.
And everything works as expected for shares from apps like Messages, email, etc... (in which case URLContexts.first.options.openInPlace == False)
The problem is with opening (sharing) a PDF that is sent from the Files App. (openInPlace == True)
If the PDF is in the App's Document Folder, I need the Security scoped resource, to access the URL from the File's App so that I can copy the PDF's data to the PDFViewer.document. I get Security scoped resource access granted each time I get the File App's context URL.
But, when I call fileCoordinator.coordinate and try to access a file outside of the App's document folder using the newUrl, I get an error.
FYI - The newUrl (byAccessor) and context url (readingItemAt) paths are always same for the Files App URL share context.
I can, however, copy the file to a new location in my apps directory and then open it from there and load in the data. But I really do not want to do that.
. . . . .
Questions:
Am I missing something in my pList or are there other parameters specific to sharing a file from the Files App?
I'd appreciate if someone shed some light on this?
. . . . .
Here are the parts of my code related to this with some print statements...
. . . . .
SceneDelegate
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
// nothing to see here, move along
guard let urlContext = URLContexts.first else {
print("No URLContext found")
return
}
// let's get the URL (it will be a PDF)
let url = urlContext.url
let openInPlace = urlContext.options.openInPlace
let bundleID = urlContext.options.sourceApplication
print("Triggered with URL: \(url)")
print("Can Open In Place?: \(openInPlace)")
print("For Bundle ID: \(bundleID ?? "None")")
// get my Root ViewController from window
if let rootViewController = self.window?.rootViewController {
// currently using just the view
if let targetViewController = rootViewController as? ViewController {
targetViewController.prepareToLoadSharedPDFDocument(at: url)
}
// I might use a UINavigationController in the future
else if let navigationController = rootViewController as? UINavigationController,
let targetViewController = navigationController.viewControllers.first as? ViewController {
targetViewController.prepareToLoadSharedPDFDocument(at: url)
}
}
}
. . . .
ViewController function
I broke out the if statement for accessingScope just to make it easier for me the debug and play around with the code in accessingScope == True
func loadPDF(fromUrl url: URL) {
// If using the File Picker / don't use this
// If going through a Share.... we pass the URL and have three outcomes (1, 2a, 2b)
// 1. Security scoped resource access NOT needed if from a Share Like Messages or EMail
// 2. Security scoped resource access granted/needed from 'Files' App
// a. success if in the App's doc directory
// b. fail if NOT in the App's doc directory
// Set the securty scope variable
var accessingScope = false
// Log the URLs for debugging
print("URL String: \(url.absoluteString)")
print("URL Path: \(url.path())")
// Check if the URL requires security scoped resource access
if url.startAccessingSecurityScopedResource() {
accessingScope = true
print("Security scoped resource access granted.")
} else {
print("Security scoped resource access denied or not needed.")
}
// Stop accessing the scope once everything is compeleted
defer {
if accessingScope {
url.stopAccessingSecurityScopedResource()
print("Security scoped resource access stopped.")
}
}
// Make sure the file is still there (it should be in this case)
guard FileManager.default.fileExists(atPath: url.path) else {
print("File does not exist at URL: \(url)")
return
}
// Let's see if we can open it in place
if accessingScope {
let fileCoordinator = NSFileCoordinator()
var error: NSError?
fileCoordinator.coordinate(readingItemAt: url, options: [], error: &error) { (newUrl) in
DispatchQueue.main.async {
print(url.path())
print(newUrl.path())
if let document = PDFDocument(url: newUrl) {
self.pdfView.document = document
self.documentFileName = newUrl.deletingPathExtension().lastPathComponent
self.fileLoadLocation = newUrl.path()
self.updateGUI(pdfLoaded: true)
self.setPDFScale(to: self.VM.pdfPageScale, asNewPDF: true)
} else {
print("Could not load PDF directly from url: \(newUrl)")
}
}
}
if let error = error {
PRINT("File coordination error: \(error)")
}
} else {
DispatchQueue.main.async {
if let document = PDFDocument(url: url) {
self.pdfView.document = document
self.documentFileName = url.deletingPathExtension().lastPathComponent
self.fileLoadLocation = url.path()
self.updateGUI(pdfLoaded: true)
self.setPDFScale(to: self.VM.pdfPageScale, asNewPDF: true)
} else {
PRINT("Could not load PDF from url: \(url)")
}
}
}
}
. . . .
Other relevant pList settings I've added are:
Supports opening documents in place - YES
Document types - PDFs (com.adobe.pdf)
UIDocumentBrowserRecentDocumentContentTypes - com.adobe.pdf
Application supports iTunes file sharing - YES
And iCloud is one for Entitlements with
iCloud Container Identifiers
Ubiquity Container Identifiers
. . . .
Thank you in advance!.
B
Hi. I need some help in starting the live activity in terminated state using push notification.
I have developed an app which does not sleep and always run even in the background state. It is pressure calculator. From sensor, it will receive the pressure and display the values in the app. Whenever the pressure reaches a certain point, it should display the alert in the dynamic island.
As of now, it is displaying live activity in the foreground state. Working partially fine in the background state. But not working in the terminated state. but in the documentation it have been mentioned we can start the live activity using push notification from any state.
Please help me to find a solution.
Hi,
I have a document-based SwiftUI multiplatform app, where the document is saved as JSON. Obviously I don't want Quick Look to show the JSON of my file, so I made a Quick Look Preview extension for each platform.
The macOS one works… okay, sometimes it's tricky to test and I need to use qlmanage to empty the cache or to show the preview, but it does work. I can even debug it.
But the iOS one just never seems to be run. If I show Quick Look in the Files app on iOS, or if I AirDrop a file from my app to my iPhone, it shows as JSON, with an option to open it in my app. If I run the iOS Preview Extension in the debugger and launch the Files app, and then try to use Quick Look in a file there, it shows the JSON and the debugger just stays in the state 'Waiting to Attach'.
The preview extensions are not data based; in both of them I have implemented
func preparePreviewOfFile(at url: URL) async throws
in PreviewViewController.swift. Pretty much the same code except one is using a UIHostingController and the other is using an NSHostingController. The only difference in the Info.plists for the two extensions is that the iOS one uses NSExtensionMainStoryboard while the macOS one uses NSExtensionPrincipalClass. This is how they were set up when I created them from the relevant Quick Look Preview Extension templates.
I made a sample project with a much simpler document, UI, etc. and I have the same issue there. The macOS preview works, the iOS one never runs. I have checked that the correct preview extension is embedded in the target for each OS (under Embed Foundation Extensions in the Build Phases)
Is there anything I need to do differently in iOS, or anything I might have inadvertently got wrong? Is there a way to run something similar to qlmanage on iOS, since that sometimes seems to help on macOS?
Incidentally, I have also added Quick Look Thumbnail extensions, and they work on both platforms.
as a beta tester I am trying to explore the OS on multiple platforms like iO, iPadOS, MacOS, WatchOS. While on trying to use beta 1 have few issues and reported to Apple with analytics as I do for better improvements. But, in beta 2 there is an issue of glitches on UI. This also tried to report. But, while am trying record screen I can not see in that video after the screen record. But, in reality I can see that glitch with eyes. as everyone know without evidence we can not report the same with tickets properly and they also can not resolve the issues. It’s affecting on all types of OS platforms of Apple buttons and search positions etc.
one more thing I absorbed is while am trying use overlay player and browse the safari or any apple developer apps which are full screen the devices are freezing and not responding and after hard restart those are starting after 10mins. As per my knowledge. Those are going through the memory overflow issue.
I am checking the response of DeviceInformation Command to collect network information from iPad.
On iPad(iPad Pro 11, M4) devices that use WiFi without inserting Usim or Esim, network values such as CurrentMCC and ICCID are received in response to the DeviceInformation command.
cf.)Even though it may be garbage value, I blurred the unique information just in case.
<key>ServiceSubscriptions</key>
<array>
<dict>
<key>CarrierSettingsVersion</key>
<string>61.0</string>
<key>CurrentCarrierNetwork</key>
<string></string>
<key>CurrentMCC</key>
<string>450</string>
<key>CurrentMNC</key>
<string>08</string>
<key>EID</key>
<string>blah blah</string>
<key>ICCID</key>
<string>blah balh</string>
<key>IMEI</key>
<string>blah blah</string>
<key>IsDataPreferred</key>
<true/>
<key>IsRoaming</key>
<true/>
<key>IsVoicePreferred</key>
<false/>
<key>Label</key>
<string>Provisioning</string>
<key>LabelID</key>
<string>00000000-0000-0000-0000-000000000000</string>
<key>PhoneNumber</key>
<string></string>
<key>Slot</key>
<string>CTSubscriptionSlotOne</string>
<key>SubscriberCarrierNetwork</key>
<string>iPad</string>
</dict>
</array>
This is a bit weird. If I collect the same information from an iPhone(iPhone 15 Pro Max) that only uses wifi and does not use Usim or Esim, it does not respond with values like ICCID, CurrentMCC, etc.
<key>ServiceSubscriptions</key>
<array>
<dict>
<key>IMEI</key>
<string>blah blah</string>
<key>Slot</key>
<string>CTSubscriptionSlotOne</string>
</dict>
<dict>
<key>EID</key>
<string>blah blah</string>
<key>IMEI</key>
<string>blah blah</string>
<key>Slot</key>
<string>CTSubscriptionSlotTwo</string>
</dict>
</array>
I'm confused by the network information collected. Is there a reason why the collected network information of iPad and iPhone are different?
Topic:
Business & Education
SubTopic:
Device Management
Tags:
iOS
iPadOS
Core Telephony
Device Management
Hi,
I was testing the lockdown mode in iOS 16 and would like to know whether we can detect the lockdown mode status using any public API that Apple provides.
I really appreciate any help you can provide.
App Name: Endless Zombies
Platform: iOS
Genre: Roguelike / Survival / Action
TestFlight Link: https://testflight.apple.com/join/DEIN-CODE
Status: Open Beta – limited seats available
🎮 What is Endless Zombies?
Endless Zombies is a fast-paced, top-down roguelike shooter where you must survive increasingly intense zombie waves — with fully separated movement and aiming controls for maximum precision and tactical depth.
Players can upgrade their weapons, unleash special attacks, and face progressively stronger threats including Baby Waves (fast mini-zombies) and Boss Battles against giant elite enemies with unique behavior.
This is not just about survival — climb the global leaderboard and fight your way to the top!
🏆 Compete for high scores, dominate the kill count, and earn bragging rights (and potential rewards in future tournaments).
Endless Zombies is currently in its first public beta and we’re looking for players who want to help us improve mechanics, test new systems, and shape the final experience.
🧪 Looking for beta testers to:
Test gameplay fluidity and aiming responsiveness
Evaluate performance on different iOS devices
Provide feedback on UI, game balance, and spawn pacing
Report bugs and edge-case issues
🚀 Features:
🎯 Dual control movement + aiming
🧠 Smarter, optimized enemy spawn logic
⚔️ Upgradeable weapons and energy system
👥 Online friends chat and leaderboard system (PlayFab-based)
📊 Stats, progress tracking, and UI improvements
Join via TestFlight:
👉 https://testflight.apple.com/join/DEIN-CODE
We’d love to hear what you think!
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if (application.applicationState == UIApplicationStateBackground) {
// ✅ Background launch
} else {
// ✅ Normal foreground launch
}
}
Previously, when using AppDelegate to handle lifecycle methods, I could determine whether a cold start was a background launch as shown above. This allowed me to accurately measure cold start time for real-world users.
The platform now requires migration to scene-based lifecycle management by iOS 16. However, after migration:
In both application:didFinishLaunchingWithOptions: and scene:willConnectToSession:options: methods,
application.applicationState == UIApplicationStateBackground and scene.activationState == UISceneActivationStateUnattached
These values remain fixed regardless of whether it's a background launch, making them unusable for differentiation.
I attempted to use information from UISceneConnectionOptions for distinction but found it ineffective.
Question: Are there alternative approaches to achieve this distinction?
In the software update in the settings if I open the software update, which is showing that could not update because I accidentally turned off the beta updates and it is showing error or something
Calling button flickers when making a call after updating to ios 26 beta 2 kindly solve the issue asap
After installing iOS 26 Developer Beta on my iPhone 13 mini, I encountered a critical battery issue. The battery percentage was stuck at 1%, and the phone could only be used while continuously plugged in.
Despite the low reading, the device remained fully functional — I could use apps, navigate, and perform tasks normally. However, the battery indicator never rose above 1%, and the Battery Health section in Settings showed 0% Maximum Capacity, which is inaccurate.
I did not allow the phone to fully discharge, out of fear that it might not turn back on. Restarting the phone and changing cables or chargers had no effect. After restoring the device to iOS 18.7.2 using DFU mode, the issue disappeared entirely — the battery percentage behaved normally again and the health section showed the correct value (about 100%).
Observed behavior:
• Battery percentage frozen at 1%
• Maximum Capacity reported as 0%
• Device only functional while connected to power
• Issue resolved immediately after restoring to iOS 18
Temporary solution:
A DFU restore to iOS 18 (18.5 22F76) immediately resolved the issue. The battery percentage and health readings returned to normal.
Additional information:
• Charger used: Official Apple 20W USB-C charger
• Cable used: Apple USB-C to Lightning cable
• Battery health after restore: 100% (replaced)