If I see it correctly, it is currently not possible to validate a drop operation on a DynamicViewContent when using dropDestination?
Just a simple example: Let's say I build a folder view on macOS where I can arrange folders freely. In this case I need to use DynamicViewContent.dropDestination to get an insertion index on drop. However, it seems that methods like dropConfiguration do not have any effect. Als dropDestionation(…, isTargeted:) seems not to be available.
Here is my sample code:
struct FolderRow: View {
let folder: Folder
var body: some View {
DisclosureGroup(isExpanded: .constant(true)) {
ForEach(folder.children) { child in
FolderRow(folder: child)
}
.dropDestination(for: Folder.self) { item, idx in
print("Dropped at \(idx)")
}
} label: {
Label(folder.name, systemImage: "folder")
.draggable(folder)
.dropDestination(for: Folder.self) { items, _ in
print("Dropped on Item")
}
}
.dropConfiguration { session in
DropConfiguration(operation: .move)
}
}
}
struct ContentView: View {
@State private var folder: Folder = Folder.sampleData
@State private var selection: Set<UUID> = []
var body: some View {
NavigationSplitView {
List(selection: $selection) {
FolderRow(folder: folder)
}
} detail: {
EmptyView()
}
}
}
The dropConfiguration is applied on the Label (in this case the "Move" cursor is used instead of the "Copy" cursor).
Is there any way to do that or is it just an omission in Swift UI?
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
We are trying to extend our app with Push To Talk functionality by integrating the Push To Talk framework. We are extensively testing what happens if the app is running in the foreground, in the background or not running at all.
When the app is in the foreground, and the user has joined a channel we maintain an open connection to our server. When a remote participant starts streaming audio, we immediately call setActiveRemoteParticipant on our PTChannelManager instance. The PTT system will than call our delegate's channelManager:didActivate audioSession method and we can successfully play the incoming audio.
When the app is not running at all, there is of course no active connection initially. When another participant starts talking we send a push notification. The PTT system will start our app in the background, call the incomingPushResult method on our delegate, after returning the remote participant the PTT framework will then call the channelmanager:didJoin delegate method which we will use to re-establish the server connection, the PTT framework then calls our channelManager:didActivate audioSession delegate method and we can then successfully play audio.
Now the problem. When the application was initially in the foreground and has an established server connection, we initially keep the server connection active when the app enters the background state, until a certain timeout or the system decides our app needs to be killed / removed from memory. This allows us to finish an incoming audio stream, quickly react on incoming responses etc. When we then receive an incoming audio stream after a certain delay (for example 5 seconds) we call the channelManager.setRemoteParticipant method (using try await syntax). This finishes successfully, without any error, however the channelManager:didActivate audioSession delegate method is never called. Manually setting up an audio session is not allowed either and returns an error.
Our current workaround for this issue is to disconnect the server connection as soon as the app goes into the background. This will make sure our server sends a push notification, which is successful in activating the audio session after which we can play audio. However, this means we need to re-establish the connection which will introduce an unnecessary delay before we can start playback (and currently means we loose some audio). This also means we need to do extra checks when going to the background to make sure there is no active incoming stream. After each incoming stream we have to check again if we are in the background and disconnect immediately to make sure we get a push notification next time. This can of course also lead to race conditions in an active conversation where we might need to disconnect between incoming streams and if we don't do this in time we might never get an activated audio session.
Now this might be by design, as Apple might not want us to keep the server connection active when the application enters the background state. But if that's the case I would expect the channelManager.setRemoteParticipant method to throw an error, but it doesn't. It returns successfully after which we would expect the audio session to get activated as well. So maybe we are not setting the capabilities of our project correctly (we might need other background permissions as well, although we already experimented with that), or we need to do something else to make this work?
Hello,
I would like to discuss the behavior of the expiration of NFCPresentmentIntentAssertion (test in iOS 18.5).
In the documentation we have :
The intent assertion expires if any of the following occur:
The intent assertion object deinitializes
Your app goes into the background
15 seconds elapse
BUT; in fact ; only the 1st rule is applied.
The expiration seems to be random after the usage of CardSession and that's difficult to give to the user a good experience.
Has someone faced the same kind of issue; or can give an explanation?
Regards,
François
I submitted a software update for one iOS app several days ago. It was approved two days ago. I received a message about distribution that said
The status of your app has changed to Ready for Distribution
I happened at the iTunes Connect website at that very moment in order to submit a totally new iOS app to the App Store. Its status said 'Removed from App Store.' I thought it was a rare mistake. Unfortunately, it's not. The one that I was submitting was approved some 15 minutes ago. I received the 'Ready for Distribution' message by email. Yet, it's been removed from the store as you see in the screenshot below.
As you see in the 2nd screenshot below, it says that it's Ready for Distribution. But it's not? So is this a new norm? And we have to go back the iTunes Connect website to change the app status every time we submit a software title and then get it approved?
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Tags:
App Store
App Review
App Store Connect
I am trying to migrate an app to use Network framework for p2p connection. I came across this great article for migrating to Network framework however this doesnt use the new structured concurrency. This being introduced with iOS 26, there doesnt seem to be any sample code available on how to use the new classes. I am particularly interested in code samples showing how to add TLS with PSK encryption support and handling of switching between Wifi and peer to peer interface with the new structured concurrency supported classes. Are there any good resources I can refer on this other than the WWDC video?
Hi everyone,
I’m facing an issue with touch handling on newer iOS versions.
I have a custom view controller implemented in Objective-C that overrides touchesEnded:. The same code works correctly on iOS 18, but on newer iOS versions (tested on iOS 26), touchesEnded: is no longer being triggered.
Important observations:
touchesBegan: is triggered.
touchesEnded: is NOT triggered.
touchesCancelled: is also NOT triggered.
No code changes were made between iOS 18 and iOS 26.
Same code, same sample works fine in iOS18 device but not in iOS26 device
Questions:
Has gesture arbitration behavior changed in recent iOS 26 versions when views are inside UIScrollView?
Any clarification on whether this is intended behavior or a regression would be greatly appreciated.
Thank you.
Topic:
UI Frameworks
SubTopic:
UIKit
My project uses about 10 local packages. When Xcode determins its dependencies graph it includes project Foo (a package) and project Foo_Foo (???). This is a no op for normal builds, but causes the Foo package to be linked twice for test builds which then fail due to duplicate symbols.
Nowhere in my repository is Foo_Foo defined or reference. Nowhere in the .xcodeproj/ folder is there mention of Foo_Foo.
What am I doing wrong?
Development environment:
MacBook pro
Apple M1
macOS Tahoe 26.2 (25C56)
Xcode 26.x
iPhone 6 Plus / iOS 12.4.4
Exception description:
After I upgraded to Xcode 26, my iPhone 6 Plus had a system version of 12.4.4. I was unable to perform real-device debugging, whether for existing projects or new ones. The error message from Xcode was as follows:
Could not launch “xxx”
Domain: IDEDebugSessionErrorDomain
Code: 3
Failure Reason: Cannot launch '/private/var/containers/Bundle/Application/A44062C1-32F5-4346-B13C-FC3F39EAF7A1/xxx.app': Unspecified
Even though I have already added device support for the iOS 12.4
Has Xcode 26 stopped supporting the debugging of any devices running iOS 12 system?
Description
I am observing a critical issue when saving burst photos using the Photos Framework. If a burst photo with the same burstIdentifier already exists in the "Recently Deleted" album, any new assets saved via PHAssetCreationRequest are automatically merged into that deleted entry instead of appearing in the main Library or "All Photos."
Environment
Framework: Photos Framework (iOS)
API: [[PHPhotoLibrary sharedPhotoLibrary] performChanges:...]
Code Snippet
The following logic is used to save the burst assets:
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
// 'paths' is a custom object providing the creation request
PHAssetCreationRequest *assetCreationRqst = [paths assetCreationRqst];
assetCreationRqst.favorite = [FavorManager.shared isSetDownloadedAssetFavorite:self.curItem];
PHObjectPlaceholder *placeHolder = assetCreationRqst.placeholderForCreatedAsset;
localIdentifier = placeHolder.localIdentifier;
} completionHandler:^(BOOL success, NSError * _Nullable error) {
if (success) {
// The handler returns success, but the asset is invisible to the user
[weakSelf handleDownloadSuccess:localIdentifier];
}
// ... cleanup and completion ...
}];
Steps to Reproduce
Save a burst photo to the iPhone's built-in Photos app.
Manually delete that burst photo so it moves to the "Recently Deleted" album.
Execute the code above to save the same burst photo (or a new set containing the same burstIdentifier in its metadata).
Check the main Photo Library / "All Photos" view.
Observed Result
The completionHandler returns success = YES, and a localIdentifier is generated.
The photo does not appear in the main Library or "All Photos."
The newly saved photo is silently merged into the existing burst set located inside the "Recently Deleted" folder.
The user cannot see the new photo unless they manually "Restore" the deleted items from the album.
Expected Behavior
PHAssetCreationRequest should always result in a visible asset in the user's Library. Even if a matching burstIdentifier exists in "Recently Deleted," the system should treat the new request as a new independent asset or provide an error, rather than hiding it within a deleted collection.
Hello.
Despite making my membership payment (and accidentally twice!), my membership is still not activated even after 62 hours.
I contacted their support system but received no response.
Does anyone have any suggestions?
Hello!
My name is Mason Prather. I'm a graduate student at Kennesaw State University and a Research Engineer working in XR environments through my Graduate Research Assistant role. I’m currently building a research prototype that connects a mobile companion application to a VR headset.
The mobile application is built in Unity and deployed on iOS, and it streams video frames to a remote Unity client using WebRTC.
Environment
Device: iPhone 15
OS: iOS 26.3 (tested on physical device, not Simulator)
Engine: Unity 2022.3.57f1
Graphics API: Metal
Streaming Technology: WebRTC (Unity WebRTC package)
Architecture: Mobile Unity app streaming video frames to a remote Unity client
Receiver Device: Meta Quest Pro headset (Unity application)
Networking: LAN (UDP discovery + TCP signaling)
Video Source: Unity RenderTexture
Goal
The goal of the system is to allow a VR user to view media stored on their phone inside a VR environment.
The iOS app:
renders or captures media content
converts frames into a WebRTC video track
streams the video to the headset
Current Status
Connection setup works correctly.
Observed behavior:
Signaling connection successful
ICE candidate exchange successful
PeerConnection state becomes Connected
Video track created successfully
However, the receiving application displays black frames.
iOS App Details
The video source originates from a Unity RenderTexture.
Inside the phone application:
RenderTexture displays correctly
Frames appear correct locally
But the receiving peer does not display the frames.
Relevant Components
Unity WebRTC package
iOS Metal rendering pipeline
Custom TCP signaling
LAN discovery via UDP
Expected Behavior
Rendered frames should transmit via WebRTC and appear on the remote device.
Actual Behavior
The remote video track is active, but the rendered frames appear black on the receiving client.
Questions
Are there known issues involving Unity WebRTC + iOS Metal texture capture?
Are there specific pixel format requirements when streaming textures from Unity on iOS?
Could the issue relate to texture readback limitations or GPU synchronization?
I am more than happy to provide screenshots and console logs upon request.
If anyone has experience streaming Unity video frames via WebRTC on iOS, I would greatly appreciate any guidance.
Topic:
Media Technologies
SubTopic:
Streaming
Hi everyone,
I'm a developer from China, and my Apple Developer Program membership is currently in the renewal period. When I click the renewal button from the banner at the top of the Apple Developer website, the page redirects but consistently shows a 503 Service Unavailable error. This has been happening for several days now.
I've already tried:
Switching to different devices or
Changing network environments
Unfortunately, the issue persists in all cases.
Has anyone else encountered this same situation? Any help or suggestions would be greatly appreciated!
Thanks in advance.
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
We are observing unexpected behavior in Apple Wallet for transactions processed via an online delivery platform. Here is the specific flow:
Initial Authorization: The original order was placed for $22.30.
Order Amendment: The user added an item 10 minutes later for $6.20, bringing the total to $28.50.
The Issue:
Apple Wallet only displays the $6.20 transaction. The initial $22.30 amount is not visible in the transaction list.
Technical Verification:
We confirmed that both backend authorization messages for the original amount and the add-on were approved.
We verified that the final settlement amounts correctly reflect the sum of both charges ($28.50).
We have confirmed the transaction lifecycle completed successfully on our end.
Despite this, the customer only sees the $6.20 entry in their Wallet history, which creates confusion as it doesn't reflect the total spent.
Has anyone encountered this sync issue between settlement totals and Wallet display, or is there a specific way we should be linking these related authorizations? Thanks!
I've recently updated to Xcode 26.3 and I can't download any iOS Simulator Runtime from 26.2 to 18.0, every download gives me:
Download failed.
Domain: DVTDownloadableErrorDomain
Code: 41
User Info: {
DVTErrorCreationDateKey = "2026-03-03 16:14:50 +0000";
}
--
Download failed.
Domain: DVTDownloadableErrorDomain
Code: 41
--
System Information
macOS Version 26.4 (Build 25E5218f)
Xcode 26.3 (24587) (Build 17C529)
Timestamp: 2026-03-03T17:14:50+01:00
I tried cleaning every cache, and logging in and out of my account.
I saw some reddit posts where they suggested to check out VPNs, host files and other stuff but everything was okay, also I can reach apple cdns etc.
I also tried using Xcode beta 26.4 and going back to 26.2 but still the same problem.
Anyone has a solution?
I have had apps in review for weeks. 1 over a month and no response. I have contacted Support multiple times and no response at all. This is a far cry from the 24-48 hrs that is advertised. Not impressed at all.
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
undle/Application/D1E61F20-B0C9-4B21-8152-E4ABFA0979F2/YTVIP.app': Unspecified
User Info: {
DVTErrorCreationDateKey = "2026-03-04 03:05:58 +0000";
DVTRadarComponentKey = 855031;
IDERunOperationFailingWorker = DBGLLDBLauncher;
RawUnderlyingErrorMessage = "Cannot launch '/private/var/containers/Bundle/Application/D1E61F20-B0C9-4B21-8152-E4ABFA0979F2/YTVIP.app': Unspecified";
}
Event Metadata: com.apple.dt.IDERunOperationWorkerFinished : {
"device_identifier" = d13ba5c93db94daa55ae177b1822998b675939a8;
"device_model" = "iPhone7,2";
"device_osBuild" = "12.5.3 (16H41)";
"device_osBuild_monotonic" = 1607004100;
"device_os_variant" = 1;
"device_platform" = "com.apple.platform.iphoneos";
"device_platform_family" = 2;
"device_reality" = 1;
"device_thinningType" = "iPhone7,2";
"device_transport" = 1;
"launchSession_schemeCommand" = Run;
"launchSession_schemeCommand_enum" = 1;
"launchSession_targetArch" = arm64;
"launchSession_targetArch_enum" = 6;
"operation_duration_ms" = 12938;
"operation_errorCode" = 3;
"operation_errorDomain" = IDEDebugSessionErrorDomain;
"operation_errorWorker" = DBGLLDBLauncher;
"operation_error_reportable" = 1;
"operation_name" = IDEiPhoneRunOperationWorkerGroup;
"param_consoleMode" = 1;
"param_debugger_attachToExtensions" = 0;
"param_debugger_attachToXPC" = 1;
"param_debugger_type" = 5;
"param_destination_isProxy" = 0;
"param_destination_platform" = "com.apple.platform.iphoneos";
"param_diag_MTE_enable" = 0;
"param_diag_MainThreadChecker_stopOnIssue" = 0;
"param_diag_MallocStackLogging_enableDuringAttach" = 0;
"param_diag_MallocStackLogging_enableForXPC" = 1;
"param_diag_allowLocationSimulation" = 1;
"param_diag_checker_mtc_enable" = 1;
"param_diag_checker_tpc_enable" = 1;
"param_diag_gpu_frameCapture_enable" = 3;
"param_diag_gpu_shaderValidation_enable" = 0;
"param_diag_gpu_validation_enable" = 1;
"param_diag_guardMalloc_enable" = 0;
"param_diag_memoryGraphOnResourceException" = 0;
"param_diag_queueDebugging_enable" = 1;
"param_diag_runtimeProfile_generate" = 0;
"param_diag_sanitizer_asan_enable" = 0;
"param_diag_sanitizer_tsan_enable" = 0;
"param_diag_sanitizer_tsan_stopOnIssue" = 0;
"param_diag_sanitizer_ubsan_enable" = 0;
"param_diag_sanitizer_ubsan_stopOnIssue" = 0;
"param_diag_showNonLocalizedStrings" = 0;
"param_diag_viewDebugging_enabled" = 1;
"param_diag_viewDebugging_insertDylibOnLaunch" = 1;
"param_install_style" = 2;
"param_launcher_UID" = 2;
"param_launcher_allowDeviceSensorReplayData" = 0;
"param_launcher_kind" = 0;
"param_launcher_style" = 0;
"param_launcher_substyle" = 0;
"param_lldbVersion_component_idx_1" = 0;
"param_lldbVersion_monotonic" = 170302360103;
"param_runnable_appExtensionHostRunMode" = 0;
"param_runnable_productType" = "com.apple.product-type.application";
"param_testing_launchedForTesting" = 0;
"param_testing_suppressSimulatorApp" = 0;
"param_testing_usingCLI" = 0;
"sdk_canonicalName" = "iphoneos26.2";
"sdk_osVersion" = "26.2";
"sdk_platformID" = 2;
"sdk_variant" = iphoneos;
"sdk_version_monotonic" = 2302005700;
}
System Information
macOS Version 26.3 (Build 25D125)
Xcode 26.3 (24587) (Build 17C529)
Timestamp: 2026-03-04T11:05:58+08:00
Topic:
Developer Tools & Services
SubTopic:
Xcode
This is a question as I don't found any related documents or posts anywhere about this. Does anyone know how and when will this "pop up" shown?
Hi all, I have set up a trivial test project to try Apple-hosted background assets following the instructions in the three articles at https://developer.apple.com/documentation/backgroundassets.
When I run the local mock server with xcrun ba-serve and set the URL override in Settings as described in the "Testing asset packs locally" article, I am able to download a test pack on my iOS devices. On the Mac that I use to run the mock server, however, the same call to AssetPackManager.shared.assetPack(withID: "TestAssetPack") that works on iOS always reports
The asset pack with the ID “TestAssetPack” couldn’t be looked up: No asset pack with the ID “TestAssetPack” was found.
even when not running the mock server, which led me to believe that it may not be hitting it at all. In fact, the macOS app will download asset packs uploaded to App Store Connect even when running the local server and setting the xcrun ba-serve url-override to the exact same string as in Settings on iOS. My initial suspicion was that something is wrong with the URL override, so I have tried all combinations of the Mac's hostname, IP address or "localhost" (with the corresponding SSL certificates) with and without port 443, always prefixing with "https://" for the url-override. All the same.
Does anyone have an idea what may be the issue here?
My asset pack has the following manifest:
{
"assetPackID": "TestAssetPack",
"downloadPolicy": {
"onDemand": {}
},
"fileSelectors": [
{
"file": "TestAsset.txt"
}
],
"platforms": [
"iOS",
"macOS"
]
}
I am running v26.1 for macOS, iOS & Xcode.
Edit:
Just to be clear, my assumption here is that the URL overrides (in Settings on iOS or via ba-serve on macOS) is what should cause the app to hit the mock server. Is that correct or am I missing something?
I have Xcode 26.1.1 (installed on a Mac Mini with Sequoia 15.7.2), which was installed from the Universal .xip file available from the Apple Developer site. This file is 2.7Gb. When Xcode is run, there is a menu item at Settings -> Components, and the top section "Platform Support" includes an option to "Get" the iOS SDK, which is an additional 10.3Gb download.[1][2]
I would like to either use command-line tools to obtain this iOS SDK component, or find where the downloaded package or its contents are installed on this Mac. This Apple Documentation some examples of using command-line tools to download components for Xcode. However, there is no specific documentation on how to separately download the iOS SDK. It seems that if possible, it could be done with "xcodebuild -downloadComponent", however I have tried a number of likely component names (ios, ios_sdk, ios26.1, ios_sdk26.1, iphoneos, iphoneos_sdk, iphoneos_sdk26.1), and none are valid.
Does anyone know either where the SDK download can be found, or how to download it using command-line tools?
Background: I require this as I am managing a fleet of Mac Minis located in a data centre (used for iOS/Android builds), and Internet access is restricted - any action requiring Internet access needs the Mac to be removed from the machine room racks and taken to a build room, then connected to a mobile hotspot or similar. This access is slow, and the above 10.3Gb download can take over an hour. If I can download the SDK separately, I can distribute it to all of the Macs over the internal network overnight, in advance of visiting the DC for upgrade tasks.
[1] Various web sites say that the iOS SDK is "bundled with" Xcode. However, if that's the case a) how is a 10.3Gb download somehow included in a 2.7Gb file? And b) why do I still need to "Get" this component after installing Xcode from the 2.7Gb file?
[2] Note that I am not looking for the iOS Simulator, I have already downloaded the iOS 26.1 version of this. I am specifically looking for the iOS SDK as listed under "Platform Support" in the Xcode menu described above.
My app's in-app purchase works perfectly (i) locally (ii) in TestFlight internal testing (iii) in TestFlight external testing in the US.
Where's the issue? Well I have one beta tester (TestFlight external tester) in the Philippines. She is unable to purchase. Her Apple ID region and device region are set to Philippines. My IAP has all regions and territories enabled and I can see the Philippine Peso pricing on App Store Connect.
She keeps seeing the price in USD rather than PHP, which, based on my searching around, seems to be common in TestFlight. But, she also keeps getting an error "Account Not In This Store - Your account is not valid for use in the US Store. You must switch to the Philippine store before purchasing". Clicking on "Change Store" doesn't help. From searching, it seems despite seeing the price in $ she ought to be able to complete the fake purchase.
Is this expected in TestFlight? I am apprehensive before submitting my app for final approval if there are going to be issues in purchasing internationally. The code is StoreKit2's product.purchase() - it's opaque to developers, and Apple is supposed to handle it correctly. Not sure what else I can do as far as the code goes.
I have successfully been able to view pricing in dollars, euros, and Philippine Peso by setting the storefront to the US, Germany, and Philippines in a local Storekit config file on an iOS simulator. So I am kind of confident that it is a TestFlight issue, but it feels weird to say something like 'ah it's a TestFlight issue, it'll work in production' :) Ideally TestFlight should be identical to production. Shouldn't it?
I am waiting on another international tester (this one is in Brazil) to get another data point.
Has anybody encountered something similar to this before? Also, any pointers for writing an automated UI test for this? What API / sample code etc.?
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight