Apple Developers

RSS for tag

This is a dedicated space for developers to connect, share ideas, collaborate, and ask questions. Introduce yourself, network with other developers, and foster a supportive community.

Learn More

Posts under Apple Developers subtopic

Post

Replies

Boosts

Views

Activity

ios 18.4.1 internet issues
I’ve recently updated to ios 18.4.1 and I have problems with the internet. Things download painfully slow, an application that used to download in 10 seconds is now downloading in 2 minutes. Videos tend to stop at some point and when i fast forward them it stops to load a little when on the previous version it would work fine. It feels like my internet aged 30 years in 10 minutes. I’ve tried on other phones (not iphones) and it works just fine. Is it from the update or is it just my internet?
1
0
130
Apr ’25
iOS RN app crashing with NSInvalidArgumentException
I am facing iOS app crash on app start, below is stack trace of crashed thread OS Version: iOS 18.3.2 (22D82) Report Version: 104 Exception Type: EXC_CRASH (SIGABRT) Crashed Thread: 28 Application Specific Information: *** -[__NSDictionaryM setObject:forKey:]: key cannot be nil Thread 28 Crashed: 0 CoreFoundation 0x323b575fc 1 libobjc.A.dylib 0x31e649244 objc_exception_throw 2 CoreFoundation 0x323b3f224 3 libloader 0x10651eba4 4 libloader 0x10653f3b4 5 libdispatch.dylib 0x3336a8248 6 libdispatch.dylib 0x3336a9fa8 7 libdispatch.dylib 0x3336b15cc 8 libdispatch.dylib 0x3336b2124 9 libdispatch.dylib 0x3336bd38c 10 libdispatch.dylib 0x3336bcbd8 11 libsystem_pthread.dylib 0x43965d680 _pthread_wqthread 12 libsystem_pthread.dylib 0x43965b474 start_wqthread
1
0
90
Apr ’25
Subscribed Calendar Issue
I'm running into issues with iOS respecting the HTTP 410 "Gone" response type. Setup: Using the native iOS Calendar app, add a new subscription calendar. "Add Subscription Calendar" Add the URL of a ICS calendar subscription that you control, e.g. https://mywebsite.com/userfeeds/23/cal.ics Make sure to select the "Account" option and choose "On My iPhone/iPad". Set the query amount to 15 mins. Calendar events show as expected, device queries the latest updates from the server every 15 minutes. Server returns HTTP 200 with the .ics contents. Now, assume there is a need for the feed to end - maybe the user unsubscribed to mywebsite.com. There is currently no way for the mywebsite.com server / response to tell the device the feed has ended and it should stop requesting. If the user forgets to go to calendar and manually unsubscribe the device will continually ping the server every 15 minutes indefinitely. It's turning into a virtual DoS for my platform. iOS should respect the HTTP 410 "Gone" header or something similar. If the server returns a HTTP 410 response code for https://mywebsite.com/userfeeds/23/cal.ics X amount of times, the feed should be automatically removed. I've opened several tickets over the last 3 years and have not even had a status change on the tickets. Does anyone know how to resolve this or a work around?
0
0
227
Apr ’25
EAP-TLS Wi-Fi and VPN Certificate Authentication – Unexpected Keychain Prompts on macOS
Hello all, We are in the process of deploying EAP-TLS Wi-Fi authentication across our corporate environment for both Windows and macOS devices. All endpoints are managed via Workspace ONE. As part of our macOS configuration, we are pushing device certificates to the login keychain of managed MacBooks. For testing purposes, we have explicitly set the Access Control List (ACL) of the associated private key to allow all applications access. This includes: eapolclient, which handles the EAP-TLS handshake for Wi-Fi panGPS, which is responsible for establishing the GlobalProtect VPN connection (we are using certificate-based authentication with pre-logon enabled) Additionally, we have configured and deployed a Wi-Fi profile via Workspace ONE to prevent users from having to manually select their device certificate - basically the identity preference card in Keychain Access. Despite these settings, we are still encountering Keychain Access prompts when eapolclient attempts to access the private key. This happens even though the key is configured to allow all applications access. This behavior is unexpected, and we’re trying to understand why these prompts persist. Has anyone encountered similar behavior on macOS, or is there something we're missing in terms of permissions or keychain configuration that could be causing this? We would greatly appreciate any insight or guidance. Thank you, Kyo
0
0
81
Jun ’25
iOS18, certificates, mail app and domain
I'm totally baffled by the changes Apple made on iOS18 about certificates usage in the built-in mail application. They decided that self-signed are not accepted any more, fine. As long as you can install your own root CA and trust it, it should be fine. But NO! They have also decided that mail will only accept IMAP servers using a domain name, no more just and IP address. So you can't get any IP-based certificate that will be accepted by the mail app, even with the right SAN and al. I've tried two "identical" certs, one with a domain and one with an IP and the domain works while the IP fails, being rejected as non-valid by the app. The most funny part is that the IP cert is good enough to configure mail (can see the successful login), but is being rejected when reading emails. I'm really fed up with the "Apple police" that wants to push us not using our own storage anymore. My se case is simple, I have an IMAP server that is used by family to archive all emails and keep them organized, saved forever and away from being scanned. I need to access that server either when locally connected or through VPN. For VPN, I use split tunnels because I don't want all traffic to go to tunnel. Nor do I want to create my own local DNS server and have all VPN clients use such DNS server only for the sake of having a domain name for the IMAP server. Nor do I want to open an external port to redirect to my IMAP server (that works of course as then I can use DDNS ...). Talk about increased security! This is insane
4
0
113
Apr ’25
How to Properly Integrate Google IMA SDK for Pre-roll, Mid-roll, and Post-roll Ads in a tvOS App using TVJS and Swift?
I'm working on a tvOS application that plays video content using TVMLKit/TVJS. I'm trying to integrate Google IMA SDK to show pre-roll, mid-roll, and post-roll ads in my app. Here’s what I’ve done so far: Video playback is handled through JavaScript in application.js. Ads are managed in Swift using Google IMA SDK. I use the evaluateJavaScript bridge to control video playback from Swift. I pause and resume the TVJS player (Player object) using a function like startPlayingVideo(value) from Swift based on the ad lifecycle. Current Flow: When the video is about to start, I call loadAds() from JS. This presents a Swift ViewController that handles IMA ad requests. On adsManagerDidRequestContentPause, I pause the video using JS via the bridge. On adsManagerDidRequestContentResume, I resume the video. The Issue: This setup doesn't behave consistently: Sometimes the ad plays in the background and video started playing as well but can not see the ad. Not able to see the post-roll ads Relevant Code Snippets: application.js function startPlayingVideo(value) { if (playerReference != undefined) { if (value == true) { playerReference.play(); else { playerReference.pause(); } } } function playVideo(videoURL) { setup playerReference, push mediaItem, etc. loadAds(); player.present(); } AppDelegate.swift let loadAds: @convention(block) () -\> Void = { DispatchQueue.main.async { let adManagerVC = ViewController() AppDelegate.tvController?.navigationController.present(adManagerVC, animated: true) } } let updateVideoPlayTime: @convention(block) (Double) -\> Void = { time in CustomContentPlayhead.shared.currentTime = TimeInterval(time) } ViewController.swift func adsManagerDidRequestContentPause(\_ adsManager: IMAAdsManager) { showAdUI() playerViewController.player?.pause() } func adsManagerDidRequestContentResume(\_ adsManager: IMAAdsManager) { hideAdUI() // Expecting JS video to resume via bridge } And yeah my IMSDK Implementation is working fine if I am using it with swift AVPlayer. What I Need Help With: Best practice for coordinating video playback between JS (Player) and Swift (IMAAdsManager). How can I sync the playhead reliably between JS and Swift? Is there a better way to pause/resume TVJS player from Swift during ad lifecycle? How to reliably insert mid-roll ads when the playback is primarily controlled in JS? Any insights, code examples, or recommended architecture improvements would be greatly appreciated!
0
0
137
Jun ’25
System Data full after clearing safari, messages, offloading apps/reinstalling apps
I‘m getting tired of having to reinstall apps because of the amount of datas. I deleted alot of photos. Deleted apps. The thing that gets my storage full is the System data. I searched up for tutorials, it was full with clearing safari history or deleting old messages, offloading apps. I did them all, none of them decreased my system data and its at 12GB while my phone‘s GB is only up to 64GB. I use IOS 16 Iphone 11. Can someone help?
1
0
121
Apr ’25
WWDC26 beta cellular issues
So recently, last week, ive updated to the Dev Beta of ios 26. This began the very issue of my cellular data. I woke up to a warning symbol where my cellular bars should be, telling me there was something wrong with my antenna or carrier when in reality there was no problem with any of those problems and took up about 53% of my storage. This is absolutely insane and unacceptable.
0
0
113
Jun ’25
find my crashing
im on ios 18.3.2 but this has been happening to me since I updated to ios 18 I think. every time I try to open find my, it opens and then after a few seconds it crashes. and then my phone bugs out for a few minutes then everything goes back to normal. is there any way to fix this? i wanna be able to find my devices without my app crashing 😭.
1
0
73
Mar ’25
Displaying limited contacts list in UIKit
I have an app that was written in UIKit. It's too large, and it would be much too time consuming at this point to convert it to SwiftUI. I want to incorporate the new limited contacts into this app. The way it's currently written everything works fine except for showing the limited contacts in the contact picker. I have downloaded and gone though the Apple tutorial app but I'm having trouble thinking it through into UIKit. After a couple of hours I decided I need help. I understand I need to pull the contact IDs of the contacts that are in the limited contacts list. Not sure how to do that or how to get it to display in the picker. Any help would be greatly appreciated. func requestAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void) { switch CNContactStore.authorizationStatus(for: .contacts) { case .authorized: completionHandler(true) case .denied: showSettingsAlert(completionHandler) case .restricted, .notDetermined: CNContactStore().requestAccess(for: .contacts) { granted, error in if granted { completionHandler(true) } else { DispatchQueue.main.async { [weak self] in self?.showSettingsAlert(completionHandler) } } } // iOS 18 only case .limited: completionHandler(true) @unknown default: break } } // A text field that displays the name of the chosen contact @IBAction func contact_Fld_Tapped(_ sender: TextField_Designable) { sender.resignFirstResponder() // The contact ID that is saved to the Db getTheCurrentContactID() let theAlert = UIAlertController(title: K.Titles.chooseAContact, message: nil, preferredStyle: .actionSheet) // Create a new contact let addContact = UIAlertAction(title: K.Titles.newContact, style: .default) { [weak self] _ in self?.requestAccess { _ in let openContact = CNContact() let vc = CNContactViewController(forNewContact: openContact) vc.delegate = self // this delegate CNContactViewControllerDelegate DispatchQueue.main.async { self?.present(UINavigationController(rootViewController: vc), animated: true) } } } let getContact = UIAlertAction(title: K.Titles.fromContacts, style: .default) { [weak self] _ in self?.requestAccess { _ in self?.contactPicker.delegate = self DispatchQueue.main.async { self?.present(self!.contactPicker, animated: true) } } } let editBtn = UIAlertAction(title: K.Titles.editContact, style: .default) { [weak self] _ in self?.requestAccess { _ in let store = CNContactStore() var vc = CNContactViewController() do { let descriptor = CNContactViewController.descriptorForRequiredKeys() let editContact = try store.unifiedContact(withIdentifier: self!.oldContactID, keysToFetch: [descriptor]) vc = CNContactViewController(for: editContact) } catch { print("Getting contact to edit failed: \(self!.VC_String) \(error)") } vc.delegate = self // delegate for CNContactViewControllerDelegate self?.navigationController?.isNavigationBarHidden = false self?.navigationController?.navigationItem.hidesBackButton = false self?.navigationController?.pushViewController(vc, animated: true) } } let cancel = UIAlertAction(title: K.Titles.cancel, style: .cancel) { _ in } if oldContactID.isEmpty { editBtn.isEnabled = false } theAlert.addAction(getContact) // Select from contacts theAlert.addAction(addContact) // Create new contact theAlert.addAction(editBtn) // Edit this contact theAlert.addAction(cancel) let popOver = theAlert.popoverPresentationController popOver?.sourceView = sender popOver?.sourceRect = sender.bounds popOver?.permittedArrowDirections = .any present(theAlert,animated: true) } func requestAccess(completionHandler: @escaping (_ accessGranted: Bool) -> Void) { switch CNContactStore.authorizationStatus(for: .contacts) { case .authorized: completionHandler(true) case .denied: showSettingsAlert(completionHandler) case .restricted, .notDetermined: CNContactStore().requestAccess(for: .contacts) { granted, error in if granted { completionHandler(true) } else { DispatchQueue.main.async { [weak self] in self?.showSettingsAlert(completionHandler) } } } // iOS 18 only case .limited: completionHandler(true) @unknown default: break } } // MARK: - Contact Picker Delegate extension AddEdit_Quote_VC: CNContactPickerDelegate { func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) { selectedContactID = contact.identifier let company: String = contact.organizationName let companyText = company == "" ? K.Titles.noCompanyName : contact.organizationName contactNameFld_Outlet.text = CNContactFormatter.string(from: contact, style: .fullName)! companyFld_Outlet.text = companyText save_Array[0] = K.AppFacing.true_App setSaveBtn_AEQuote() } } extension AddEdit_Quote_VC: CNContactViewControllerDelegate { func contactViewController(_ viewController: CNContactViewController, shouldPerformDefaultActionFor property: CNContactProperty) -> Bool { return false } func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) { selectedContactID = contact?.identifier ?? "" if selectedContactID != "" { let company: String = contact?.organizationName ?? "" let companyText = company == "" ? K.Titles.noCompanyName : contact!.organizationName contactNameFld_Outlet.text = CNContactFormatter.string(from: contact!, style: .fullName) companyFld_Outlet.text = companyText getTheCurrentContactID() if selectedContactID != oldContactID { save_Array[0] = K.AppFacing.true_App setSaveBtn_AEQuote() } } dismiss(animated: true, completion: nil) } }
2
0
835
Jun ’25
TVOS - App Data Stored in Shared App Groups not removing after deletion of apps
Hi, Having a weird issue that I’m noticing on Apple TVs with some apps that are by the same company. I think it’s storing residual user data if if you delete the app and all other apps relating to this. I have even tried deleting every app and reinstalling but we found two apps to be still logged in. Seams like a sandboxing bug and I presume it’s to do with App data stored in the shared app groups. I can only reset the apple tv to remove the user data. The two apps we can see are being persistent is Binge and Kayo by streamotion. We have tried problem solving this in every way imaginable but it’s Interesting that this is allowed to happen on an Apple platform. There is no active user logged into the apple TV with an Apple ID either
0
0
69
Apr ’25
Disk Utility / diskutil Partition Freezes
Hello Apple Developer Community, I'm encountering a persistent issue while attempting to create a new partition on my Mac, and I'm hoping to get some assistance or insights from anyone who might have faced a similar problem. Issue Description: I'm trying to partition my internal drive. I initially used Disk Utility.app for this purpose. The partitioning process starts, but consistently freezes when it reaches approximately 10-20% completion. I've left it running overnight (for over 9 hours), but there was no progress, and the application remained unresponsive at that percentage. After several attempts with Disk Utility, I decided to try using the diskutil commands in Terminal to see if that would yield a different result. I used commands such as diskutil apfs resizeContainer and diskutil partitionDisk. Unfortunately, these commands also result in the same behavior: the process starts, reports progress up to about 10-20%, and then completely freezes without any further output or completion, requiring me to force-quit Terminal. Mac Model: Apple M4 Pro MacOS Version: Sequoia 15.6
0
0
139
Jun ’25
iMessage
My imessage has been acting up for 1 month now. It fails to activate my phone number and prefers my email. This is a beta issue Apple support has told me and it needs fixing asap.
0
0
58
Apr ’25
Files Can’t Be Accessed
I am trying to open items saved to my files and keep receiving this notification every time I do so, “The operation couldn't be completed. (NSFileProvider- ErrorDomain error -2005.)” What does this mean and how do I fix it? I have a 256 gb phone so I know storage is not an issue. Please help as I have files saved to my phone and not anywhere else.
1
0
91
Mar ’25
RxSwift Driver got fatal error in Swift Testing because it is not called form main thread.
Hi, I'm trying the new Swift Testing instead of XCTest for my new project. I am using RxSwift+UIKit. And when I am trying to test my ViewModel that has a Driver in it, it crashes due to the driver is not being called form main thread. Thread 5: Fatal error: `drive*` family of methods can be only called from `MainThread`. Here is the test code: struct PlayerViewModelTest { @Test func testInit_shouldPopulateTable_withEmpty() async throws { // Arrange let disposeBag = DisposeBag() var expectedSongTableCellViewData: [SongTableCellViewData]? // Act let sut = PlayerViewModel(provideAllSongs: { return .just(mockSongList) }, provideSongByArtist: { _ in return .just(mockSongList) }, disposeBag: disposeBag) sut.populateTable .drive(onNext: { expectedSongTableCellViewData = $0 }) .disposed(by: disposeBag) // Assert #expect(expectedSongTableCellViewData != nil, "Should emit something so it should not be nil") #expect(expectedSongTableCellViewData!.isEmpty, "Should emit empty array") } } This never happen in XCTest. So I assume Swift Testing is not being run in the main thread? How do I fix this? Thanks
1
0
171
Mar ’25
i0S26 issue with CarPlay
I just upgraded to iOS 26.0 Now when I use car play, the text messages do not show up, only the notification tone on my phone alarms. So now when I get texts while driving, I need to read my phone to read the text. I tried all the solutions within settings but this is a BIG DRAWBACK compared to the old iOS.
0
0
78
Jun ’25
iCloud file reading and writing (iOS)
On my first attempt at adding iCloud to my existing app this is how far I've gotten. For reasons that I won't go into, the use case for my app does not need coordination. I have successfully made my app write a file to the Documents directory of iCloud and read back that same file without errors. In testing on a real iPhone 13 and iPhone 7 I have verified that my app can write a file to iCloud from the iPhone 7 and then read back that same file on the iPhone 13, so I know that the file truly exists in the cloud. But when I make my app on the iPhone 13 write to iCloud, my app on the iPhone 7 says the file does not exist. Exactly the same build of my app is running in both phones. This is problem #1. Problem #2 is that none of these files appear in the iCloud section of the Files app on either of these Phones, nor do they appear in the iCloud section of my Mac. All devices are signed in to my same Apple account in iCloud. Also my info.plist file in the app contains: <key>NSUbiquitousContainers</key> <dict> <dict> <key>iCloud.com.{my domain}.{my app}</key> <dict> <key>NSUbiquitousContainerIsDocumentScopePublic</key> <true/> <key>NSUbiquitousContainerSupportedFolderLevels</key> <string>Any</string> <key>NSUbiquitousContainerName</key> <string>{my app}</string> </dict> </dict> </dict> <key>UIFileSharingEnabled</key><true/> The iPhone 7 is running iOS 15.8.4 and the iPhone 13 is running iOS 18.3.2. The code that does the writing to iCloud is: NSFileManager *fman = [NSFileManager defaultManager]; NSURL *urlDrive = [fman URLForUbiquityContainerIdentifier: nil]; NSURL *urlDocs = [urlDrive URLByAppendingPathComponent:@"Documents"]; if(urlDocs.path == nil) { NSLog(@"NULL path"); return; //..big problem } if( ! [fman fileExistsAtPath: urlDocs.path] ) { //..need to create the Docs directory NSError *err00 = nil; @try { [fman createDirectoryAtURL: urlDocs withIntermediateDirectories:true attributes:nil error:&err00]; NSLog(@"created the directory"); } @catch (NSException *except) { NSLog(@"Exception creating directory %@", except); } } //..directory is now created NSLog(@"url=%@", urlDocs); NSURL *urlFile = [urlDocs URLByAppendingPathComponent:txtfname()]; NSData *fdata = [@"Hello world" dataUsingEncoding: NSUTF8StringEncoding]; NSLog(@"file url=%@", urlFile); NSLog(@"file Data=%@", fdata); NSError *errorReturn = nil; Boolean ret = [fdata writeToURL: urlFile options: NSDataWritingAtomic error: &errorReturn]; NSLog(@"returned %1d, error=%@", ret?1:0, errorReturn); And the code that does the reading is: NSFileManager *fman = [NSFileManager defaultManager]; NSURL *urlDrive = [fman URLForUbiquityContainerIdentifier: nil]; NSURL *urlDocs = [urlDrive URLByAppendingPathComponent:@"Documents"]; NSLog(@"url=%@", urlDocs); if(urlDocs.path == nil) { NSLog(@"urlDocs.path is NULL!"); return; //..big problem } if( ! [fman fileExistsAtPath: urlDocs.path] ) { //..need to create the Docs directory NSLog(@"It seems the urlDocs folder does not exist"); } NSURL *urlFile = [urlDocs URLByAppendingPathComponent:txtfname()]; if([fman fileExistsAtPath: urlFile.path]) { NSLog(@"file %@ exists", urlFile); [fman copyItemAtURL: urlFile toURL:<#(nonnull NSURL *)#> error:<#(NSError *__autoreleasing _Nullable * _Nullable)#>]; } else { NSLog(@"file %@ DOES NOT EXIST!", urlFile); }
1
0
119
May ’25
Feature duration
I will give some suggestions and action buttons about dynamic islands on iPhonesAfter dragging and dropping an application or file on dynamic islands, when I switch to any application or site, I can switch to that file or application by holding down the Dynamic Island As for the action button, we can assign features to the action button. A feature like this can come to it. When we press it twice, it will open the camera, when we press it once, it will open the flash. If such a feature comes, it will be easier to use
1
0
58
Mar ’25
UI & App related
Due to it's new UI with transprent theme, sometimes its lacked between switching the apps. Please add AI eraser in photos app so that we can experience new ai tool. Due to india region, unable to use wallet options, Please add some options so that we can add cards and use this option.
2
0
131
Jun ’25