Hello,
I’m using a valid certificate bundle generated with SDK 26 (combined RSA‑1024 + RSA‑2048).
However, all my devices currently still generate SPC v2 during playback, including my iPhone 16 under iOS 26.2.
Apple staff mentioned that future iOS versions will send SPC v3 when using an SDK 26 certificate bundle.
Could you please clarify:
Which iOS/macOS versions will first support SPC v3?
Are there any additional client‑side requirements (Safari version, playback APIs, headers, etc.) to trigger SPC v3?
Is there any way to test SPC v3 today, e.g., using beta builds?
Thank you!
Explore the integration of media technologies within your app. Discuss working with audio, video, camera, and other media functionalities.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
While implementing the new background backup feature introduced in iOS 26.1, I create a PHAssetResourceUploadJob in an Extension. On iOS 26.1, the system successfully triggers the upload. However, on iOS 26.2, although the job is created successfully and all related configurations are correctly set, the system does not trigger the upload.
Could you please help confirm the cause of this issue? Thank you.
I am building an app where I am using AudioRecordingIntent to start audio recording from shortcuts / Action button etc. Whenever I set that up, I notice that I get an error -
Unknown NSError Live Activity start failed: The operation couldn’t be completed. Target is not foreground
I explicitly try to start the live activity and then start the audio recording and that's when I see this error.
How can I make this work? I am unable to find any examples.
Topic:
Media Technologies
SubTopic:
Audio
【溦N51888M】腾龙公司会员申请流程步骤【罔纸 211239.com 】输入官惘到浏览器打开联系24小时在线业务人员办理上下,打开公司官网.
二、点击主页右上角注册按钮.
三、填写账号信息.
四、输入手机号,验证码,密码.
五、勾选用户协议,完成注册协议,完成注册.
注意:若出现账号已存在」提示,需重新设置唯一账号名称
Topic:
Media Technologies
SubTopic:
Audio
Hello,We have been working on FPS for a while and managed to play an encrypted asset with it, using version 2 of FairPlay Streaming Server SDK 2.03.Now we are working on "Download and Play Offline" functionality. For this I have downloaded the FairPlay Streaming Server SDK 3.0 and in SDK Folder there is "OfflineHLSGuide_withFPS.pdf" document beside "FairPlayStreaming_PG.pdf" where they tell about how it works and what need to be done.In that document ("OfflineHLSGuide_withFPS.pdf") there is new version of Content Key Duration TLLV which is slightly different than the structure shown in "FairPlayStreaming_PG.pdf"For Content Key Duration TLLV (0x47acf6a418cd091a) in "FairPlayStreaming_PG" there is "Lease Duration" between bytes 16-19.But in the document about OfflineHLSGuide, it says "Reserved" for bytes between 16-19.Where has LeaseDuration gone for offline? ORShould I use one ContentKeyDuration TLLV for non-persist and other version of ContentKeyDuration TLLV for (persist)offline?Thanks
My code that streams buffers into AVAudioPlayerNode is stuttering when the buffer is finished and before the next one is played.
while engine.isRunning {
let framesToCopy = min(buffer.frameLength - framePosition, Self.BufferSize)
let srcRaw = UnsafeRawPointer(srcPtr)
let playbackBuffer = AVAudioPCMBuffer(pcmFormat: buffer.format, frameCapacity: Self.BufferSize)!
let playbackPtr = playbackBuffer.floatChannelData![0]
let destRaw = UnsafeMutableRawPointer(mutating: playbackPtr)
memcpy(destRaw, srcRaw, Int(framesToCopy) * MemoryLayout<Float>.stride)
srcPtr = srcPtr.advanced(by: Int(framesToCopy))
playbackBuffer.frameLength = framesToCopy
await player.scheduleBuffer(playbackBuffer,
at: nil,
options: [],
completionCallbackType: .dataRendered)
}
I've tried to schedule multiple buffers at once using a combination of both the synchronous and async versions of scheduleBuffer because I thought the delay might be but it still stutters and the data copied into the playbackBuffer matches the source buffer. I've tried all combinations of options and completionCallbackType but no luck.
I've tried increasing the buffer size but that just spaces out the stutters because the buffer is larger.
What am I missing about this API?
Hi everyone,
We’re encountering an issue where AudioQueueNewOutput blocks indefinitely and never returns, and we’re hoping to get some insight or confirmation if this is a known behavior/regression on newer iOS versions.
Issue Description
When triggering audio playback, we create an output AudioQueue using AudioQueueNewOutput.
On some devices, the call hangs inside AudioQueueNewOutput and never returns, with no OSStatus error and no subsequent logs.
This behavior is reproducible mainly on iOS 18.3.
Earlier iOS versions do not show this issue under the same code path.
if (audioDes)
{
mAudioDes.mSampleRate = audioDes->mSampleRate;
mAudioDes.mBitsPerChannel = audioDes->mBitsPerChannel;
mAudioDes.mChannelsPerFrame = audioDes->mChannelsPerFrame;
mAudioDes.mFormatID = audioDes->mFormatID;
mAudioDes.mFormatFlags = audioDes->mFormatFlags;
mAudioDes.mFramesPerPacket = audioDes->mFramesPerPacket;
mAudioDes.mBytesPerFrame = audioDes->mBytesPerFrame;
mAudioDes.mBytesPerPacket = audioDes->mBytesPerFrame;
mAudioDes.mReserved = 0;
}
// Create AudioQueue for output
OSStatus status = AudioQueueNewOutput(
&mAudioDes,
AQOutputCallback,
this,
NULL,
NULL,
0,
&audioQueue
);
code-block
The thread blocks inside AudioQueueNewOutput, and execution never reaches the next line.
Additional Notes / Observations
ASBD is confirmed to be valid
Standard PCM output
Sample rate, channels, bytes per frame/packet all consistent
Same ASBD works correctly on earlier iOS versions
AudioQueue is created on a background thread
Not on the main thread
Not inside the AudioQueue callback
On first creation, AVAudioSession may not yet be active
setCategory and setActive:YES may be called shortly before creating the AudioQueue
There may be a timing window where the session is still activating
Issue is reported mainly on iOS 18.3
Multiple user reports point to iOS 18.3 devices
Same code path works on iOS 17.x and earlier
No OSStatus error is returned — the call simply never returns.
Questions
Is it expected that AudioQueueNewOutput can block indefinitely while waiting for AVAudioSession / audio route / HAL readiness?
Have there been any behavior changes in iOS 18.3 regarding AudioQueue creation or AudioSession synchronization?
Is it unsafe to call AudioQueueNewOutput before AVAudioSession is fully active on recent iOS versions?
Are there recommended patterns (or delays / callbacks) to ensure AudioQueue creation does not hang?
Any insight or confirmation would be greatly appreciated.
Thanks in advance!
[Note: this issue was happening on a main testing device, and after testing the same code on other devices, this issue is only happening on 1 out of 4 devices]
We are successfully getting a MusicCatalogResourceResponse for every song ID where we make the MusicCatalogResourceRequest. We are able to display the song title, artist name, and album artwork for each Song in the response.
However - when we go to play the song, there are some songs that play, and several songs that do not play. For the songs that don't play, the console shows “Failed to prepareToPlay error=<MPMusicPlayerControllerErrorDomain.6 "Failed to prepare to play" {}>”
let musicPlayer = ApplicationMusicPlayer.shared
func playSong(_ song: Song) {
musicPlayer.queue = [song]
Task {
try await musicPlayer.prepareToPlay()
try await musicPlayer.play()
}
Is there anything else we can investigate about what may be causing specific song IDs not to play on this specific device?
Even if we remove line 6 musicPlayer.prepareToPlay() we still see the same console error when running playSong with the Songs that don't work.
It is always the same song IDs that we can play and always the same song IDs that we cannot get to play, even trying them across different projects with different bundle identifiers.
We can tap to play a song that works, and it starts playing immediately. Then tap a song that doesn't work, and nothing happens. Then back to a song that works. It's consistent which songs succeed and fail on this device.
Perhaps there is an issue specific to this very iPad when it comes to certain specific songs, but we'd like to be confident that an app relying on MusicKit will be able to play songs that have been successfully loaded with a MusicCatalogResourceResponse.
Thanks for any help or suggestions about what we may be able to investigate further on the device or what we should consider when launching an app that expects anyone with Apple Music to be able to listen to any of the songs loaded by the app.
Specific iPad details: iPad Pro (12.9-inch) (6th generation) running iPadOS 26.4 Beta
Two of the song IDs that won't play on this iPad (even though we can access and display their album artwork and all other information): 943204000 and 1441164805
I read somewhere that the frames are returned in decode order instead of presentation order when using AVAssetReader. The documentation seems sparse on the subject. I have so far failed to find a video file where the frames are not returned in presentation order.
Can anyone confirm the frames are actually returned in decode order?
Hello,
I am currently developing a live streaming application using AVPlayer to play LL-HLS (Low-Latency HLS) content.
During our testing phase, we consistently encountered the following error in the logs:
CoreMediaErrorDomain Code=-15517
The challenge we are facing is that the error description is quite vague. It only provides cryptic messages such as "Key not found" or "No value information," which makes it extremely difficult to identify the root cause or perform a deep-dive analysis.
I have searched through the official Apple Developer documentation and technical notes, but I couldn’t find any specific reference to what Code -15517 signifies in the context of LL-HLS or CoreMedia.
Regarding this issue, I have the following questions:
What is the specific meaning of this error code (-15517)? Does it relate to missing tags in the HLS manifest, or is it an internal state issue within the AVPlayer stack?
Specifically, I would like to know if this is a critical error that disrupts playback, or if it is just a warning that can be safely ignored.
Is there any additional logging or debugging tool you would recommend to further investigate "Key not found" issues in LL-HLS?
Any insights or guidance from the community or Apple engineers would be greatly appreciated.
Thank you in advance for your help.
Product Xcode
Version 26.3 (26C5131e)
Platform macOS / iOS Simulator / iOS Device
Classification Bug / Incorrect UI Behaviour
Reproducibility Always (persists across restarts, scheme recreation, DerivedData clearing)
Date Encountered February 20, 2026
Hardware Mac mini (M2) running macOS
Test Device iPhone SE (2nd generation), iOS 26.3
Summary
In Xcode 26.3, attempting to run an iOS app on any simulator destination using Cmd+R fails with the error:
"A build only device cannot be used to run this target. Please select an available device or choose a simulated device as the destination."
This occurs despite the selected destination being a valid iOS Simulator (not a "build only" device). The same project builds successfully using Cmd+B within Xcode and builds, installs, and runs correctly via the command line using xcodebuild, xcrun simctl, and xcrun devicectl.
Steps to Reproduce
Open a valid iOS project in Xcode 26.3. The project in question has target name "h", product name "DiabetesHbA1cPrediction", bundle identifier "com.diabeteshba1c.DiabetesHbA1cPrediction", with IPHONEOS_DEPLOYMENT_TARGET set to 26.0.
In the scheme/destination picker toolbar, select any iOS Simulator destination (e.g. iPhone 16, iPhone 17 Pro, or any other available simulator). The destination name appears correctly in the toolbar without any "build only" annotation.
Press Cmd+R (Product > Run).
Xcode immediately displays the error: "A build only device cannot be used to run this target."
Press Cmd+B (Product > Build) instead. The build succeeds with no errors.
Expected Behaviour
Cmd+R should build and launch the application on the selected simulator, just as it does in previous Xcode versions. The user had been running simulators successfully for the prior week before this issue appeared.
Actual Behaviour
Xcode refuses to run the app, treating every simulator destination as a "build only device." The error appears instantly upon pressing Cmd+R, before any build activity begins. Cmd+B succeeds normally, confirming the project and scheme configuration are valid.
Workarounds Attempted (All Failed)
The following troubleshooting steps were performed, none of which resolved the Xcode UI issue:
Changed IPHONEOS_DEPLOYMENT_TARGET across multiple values (26.2, 18.0, 26.0) in all build settings within project.pbxproj.
Deleted and recreated the Xcode scheme (removed .xcscheme files from xcshareddata and xcuserdata, let Xcode auto-create a new scheme).
Deleted the entire DerivedData folder (rm -rf ~/Library/Developer/Xcode/DerivedData).
Selected multiple different simulator destinations (iPhone 16, iPhone 16 Pro, iPhone 17 Pro) — all produced the same error.
Verified the scheme’s Executable setting (confirmed it was set to the correct .app target).
Changed "Show Run Destination" setting between Automatic and Always.
Quit and restarted Xcode completely.
Confirmed that simulator device names in the destination dropdown appeared normally, without any "build only" suffix.
Working Workaround: Command-Line Build and Deploy
The project builds, installs, and runs correctly when using command-line tools, confirming the project configuration is valid:
Simulator deployment:
xcodebuild -scheme h -destination 'platform=iOS Simulator,name=iPhone 16' build
xcrun simctl boot 7F0DF8DA-E4A3-41B2-A2E4-B1F528753189
xcrun simctl install booted
xcrun simctl launch booted com.diabeteshba1c.DiabetesHbA1cPrediction
Result: App launched and ran correctly in the simulator.
Physical device deployment (iPhone SE 2020, iOS 26.3):
xcodebuild -scheme h -destination 'id=00008030-001128DC2E51402E' build
xcrun devicectl device install app --device
xcrun devicectl device process launch --device com.diabeteshba1c.DiabetesHbA1cPrediction
Result: BUILD SUCCEEDED, app installed and launched on the physical device without issue.
Key Observations
The disconnect between Xcode’s UI-based Run (Cmd+R) failing and the command-line build/deploy succeeding with identical configuration strongly suggests this is an Xcode IDE bug in the run destination resolution logic, not a project configuration issue.
Cmd+B succeeds in Xcode itself, meaning the build system correctly recognises the project, scheme, and destination. The failure occurs specifically in the “run” pathway where Xcode evaluates whether the destination supports execution.
The simulator dropdown shows destination names without any "build only" label, yet Xcode internally treats them as build-only when the Run action is invoked.
This behaviour started occurring in Xcode 26.3. The same project and simulators worked correctly in the preceding week under the same Xcode installation.
Environment
Xcode version: 26.3 (26C5131e)
macOS: Running on Mac mini (M2)
iOS SDK: 26.3
Available simulator runtimes: iOS 18.6, iOS 26.2
Physical test device: iPhone SE (2nd generation), iOS 26.3
Project type: SwiftUI iOS app with HealthKit integration
Signing: Automatic, with valid provisioning for both simulator and device
Hello everyone,
I’m looking for more detailed information regarding UVC (USB Video Class) over MFi within the Apple ecosystem and would appreciate some clarification.
I’m interested in developing (or interfacing with) an accessory that transmits video over USB using the UVC standard, and I’d like to better understand how this works within the MFi (Made for iPhone) program.
Here are my main questions:
1. Do iOS devices provide native support for UVC over USB-C or Lightning within the MFi framework?
2. Are there any specific firmware or authentication requirements when the accessory is MFi-certified?
3. Does UVC support depend solely on the hardware interface (USB-C vs Lightning), or are there additional software-level requirements?
4. Is there any official documentation outlining the recommended flow for implementing UVC-based video capture accessories on iOS?
From what I understand, USB-C iPads appear to offer more direct support for standard UVC devices, but it’s not entirely clear how this integrates with the MFi ecosystem with iOS, especially for commercial product development.
If anyone has gone through this process or can point me to relevant technical documentation, I would greatly appreciate the guidance.
Thank you!
I just bought a monitor S2725QC from Dell Technologies and isn't fully-integrated with MacOS even though it says on the website it is compatible with MacOS.
https://www.dell.com/en-us/shop/all-monitors/sac/monitors/all-monitors/macos-compatible?appliedRefinements=51765
The screen brightness and volume control buttons don't work with the monitors (I have two). What can I do in terms of writing code with Dell Monitor SDK and MacOS Frameworks/Technologies?
Hi,
Has anyone been able to protect the audio part of FairPlay protected content from being captured as part of screen recording on Safari/iOS (PWA and/or online web app)?
We have tried many things but could not prevent the audio from being recorded.
Same app and content on Safari/Mac does not allow audio to be recorded. Any tips?
Hello,
I am building an iOS-only, commercial app that uses AVSpeechSynthesizer with system voices, strictly using the APIs provided by Apple. Before distributing the app, I want to ensure that my current implementation does not conflict with the iOS Software License Agreement (SLA) and is aligned with Apple’s intended usage.
For a better playback experience (more accurate estimation of utterance duration and smoother skip forward/backward during playback), I currently synthesize speech using:
AVSpeechSynthesizer.write(_:toBufferCallback:)
Converting the received AVAudioPCMBuffer buffers into audio data
Storing the audio inside the app sandbox
Playing it back using AVAudioPlayer / AVAudioEngine
The cached audio is:
Generated fully on-device using system voices
Stored only inside the app’s private container
Used only for internal playback controls (timeline, seek, skip ±5 seconds)
Never shared, exported, uploaded, or exposed outside the app
The alternative approaches would be:
Keeping the generated audio entirely in memory (RAM) for playback purposes, without writing it to the file system at any point
Or using AVSpeechSynthesizer.speak(_:) and playing speech strictly in real time which has a poorer user experience compared to my approach
I have reviewed the current iOS Software License Agreement:
https://www.apple.com/legal/sla/docs/iOS18_iPadOS18.pdf
In particular, section (f) mentions restrictions around System Characters, Live Captions, and Personal Voice, including the following excerpt:
“…use … only for your personal, non-commercial use…
No other creation or use of the System Characters, Live Captions, or Personal Voice is permitted by this License, including but not limited to the use, reproduction, display, performance, recording, publishing or redistribution in a … commercial context.”
I do not see a specific reference in the SLA to system text-to-speech voices used via AVSpeechSynthesizer, and I want to be certain that temporarily caching synthesized speech for internal, non-exported playback is acceptable in a commercial app.
My question is:
Is caching AVSpeechSynthesizer system-voice output inside the app sandbox for internal playback acceptable, or is Apple’s recommended approach to rely only on real-time playback (speak(_:)) or strictly in-memory buffering without file storage?
If this question falls outside DTS technical scope and is instead a policy or licensing matter, I would appreciate guidance on the authoritative Apple documentation or the correct Apple team/contact.
Thank you.
Hello,
I am reviewing the sample codes of FairPlay Streaming SDK 26 and there was a place where I think is a mistake.
The codes are for the server, for both Swift and Rust codes.
There is an if statement which compares "ProtocolVersionUsed"(spcData.versionUsed) and SPCVersion1 constant, though "ProtocolVersionUsed" and SPC Version is a different thing, so shouldn't it be using a different constant value?
[createContentKeyPayload.swift]
// Fallback to version 1 if content can have encrypted slice headers, which need to be decrypted separately. Slice headers are not encrypted when using CBCS.
if serverCtx.spcContainer.spcData.versionUsed == base_constants.SPCVersion.v1.rawValue &&
[createContentKeyPayload.rs]
// Fallback to version 1 if content can have encrypted slice headers, which need to be decrypted separately. Slice headers are not encrypted when using CBCS.
if (serverCtx.spcContainer.spcData.versionUsed == SPCVersion::v1 as u32) &&
Thank you.
With the help of Claude and Codex, I've tried upgrading a screen magnification, capture, and pixel peeping app (SnoopX, from Stanford's software repository) to be HDR-aware. For images that are truly HDR (displayed in Apple Photos, Google Photos in Chrome, or Mac Preview), and on an HDR monitor with plenty of EDR headroom (Apple XDR display), I should see pixel values well above 1.0. Apple's Digital Color Meter does. However, my app does not. I think the code is doing all the right things with ScreenCaptureKit, but it never returns values above 1.0. Has anybody gotten this to work? Here is what Codex says about the code it helped me build in my app:
• Set captureDynamicRange:
We set config.captureDynamicRange = SCCaptureDynamicRangeHDRLocalDisplay (when available).
Note: Gemini’s SCCaptureModeHDRLocalDisplay isn’t a real symbol — the actual API is SCCaptureDynamicRange.
• Use preset:
We try initWithPreset: SCStreamConfigurationPresetCaptureHDRStreamLocalDisplay, but your runtime crashes on initWithPreset: (unrecognized selector), so we fall back to manual config. That means your system SDK headers mention the preset, but the runtime doesn’t implement it.
• Pixel format:
We explicitly set kCVPixelFormatType_64RGBAHalf. Your logs show the stream buffer is 64RGBAHalf.
• Enable HDR on display:
EDR headroom logs show current=6.40, so HDR is active.
• Color space:
We set Extended Linear Display P3 for stream, and we forced the screenshot sampler to convert into extended‑linear P3 before reading. The screenshot itself reports Extended sRGB, but conversion doesn’t yield >1.0 either.
Despite all of that, the OS is still delivering tone‑mapped values (max 1.0000) for both the stream and the screenshot path.
So I don’t think there’s a missing knob here; it looks like a system‑level limitation on Tahoe for desktop capture.
Hello, I'm working on a MusicKit based SwiftUI app. I've integrated AirPlay using the AVRoutePickerView like so:
struct UIKitAirPlayPickerView: UIViewRepresentable {
func makeUIView(context: Context) -> AVRoutePickerView {
let routePickerView = AVRoutePickerView()
routePickerView.prioritizesVideoDevices = false
return routePickerView
}
func updateUIView(_ uiView: AVRoutePickerView, context: Context) {}
}
The AirPlay menu appears as expected, and selecting an AirPlay device functions as expected. I'm currently sending audio from my app to a HomePod. However, the state of the AVRoutePickerView does not reflect the playback state. There is no cover art and it says "Not Playing". When my device is locked, my lock screen shows the album art, metadata and AirPlay routing as expected.
My app uses the ApplicationMusicPlayer however I encounter the same behavior using the SystemMusicPlayer.
Any guidance on how to troubleshoot this? Is there any other way to integrate the system AirPlay picker into my app, or is this my only option?
Thank you for reading.
I received my approval for FairPlay Streaming (FPS) and was getting things organized and then my computer crashed. So...
Yes, I lost the 32 digit Account Security Key (ASk) that I was warned not to lose repeatedly...
I understand that I can't query apple for the existing ASk. I don't see where I can delete the existing cert to request another one. So I assume I'll need to start from scratch either with another FPS approval process.
Can someone please direct me on next steps for this boneheaded situation.
Thank you
I'm relatively new to Swift development (and native iOS development for that matter)
I've got an iOS app that uses the iPhone / iPad built in cameras, and am looking to make this more compatible with macOS.
Using the normal AVCaptureDevice.DiscoverySession I seem to get the iPhone Continuity Camera and the in-built MacBook Pro camera but I don't see other input devices that I see in QuickTime Player (for example) such as connected external cameras or Virtual Inputs provided by NDI Virtual Input and OBS.
Is there a way to see access these without a specific Mac build (as the rest of the functionality works great, and I'd rather not diverge the codebase too much as it's easier to update one app than two!