Repository navigation
AVFoundation tvOS xcode27.2 b3
Alex Soto edited this page Oct 17, 2026
·
1 revision
#AVFoundation.framework
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h 2026-08-08 18:03:43
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVAssetDownloadTask.h 2026-10-07 01:47:54
@@ -60,45 +60,57 @@
/// By default AVAssetDownloadTask will prefer HDR content.
AVF_EXPORT NSString *const AVAssetDownloadTaskPrefersHDRKey API_DEPRECATED("Use AVAssetDownloadConfiguration:variantQualifiers with assetVariantQualifierWithPredicate using [NSPredicate predicateWithFormat:@'videoAttributes.videoRange == %@', AVVideoRangePQ]", macos(11.0, 27.0), ios(14.0, 27.0), visionos(1.0, 27.0)) API_UNAVAILABLE(tvos, watchos);
-/// An NSURLSessionTask that downloads a remote AVURLAsset to the device for offline playback.
+/// A URL session task that downloads a remote asset to the device for offline playback.
///
-/// To play an asset while its download is in progress, re-use the AVURLAsset supplied to the
-/// download configuration. The asset may read locally cached segments as they become available
-/// during concurrent playback (segments are used when the streaming variant matches the
-/// downloading variant).
+/// You create instances of this class by calling
+/// ``AVAssetDownloadURLSession/assetDownloadTaskWithConfiguration:`` on the download session.
///
-/// Adopt the AVAssetDownloadDelegate protocol to receive progress and completion callbacks. Use
-/// NSURLSessionTask.progress for numeric download progress updates. The delegate method
-/// URLSession:assetDownloadTask:willDownloadToURL: provides the local file URL at which the asset
-/// will be stored; save this URL to instantiate an offline AVURLAsset later.
+/// To play an asset while its download is in progress, reuse the ``AVURLAsset`` you supplied to
+/// the ``AVAssetDownloadConfiguration``. The asset reads locally cached segments during concurrent
+/// playback when the streaming variant matches the downloading variant.
///
-/// A download task initialized with an AVURLAsset whose URL references an existing downloaded asset
-/// on disk may augment that asset's download — for example, by adding media selections that were
-/// not part of the original download.
+/// Adopt the ``AVAssetDownloadDelegate`` protocol to receive progress and completion callbacks. Use
+/// the inherited <doc://com.apple.documentation/documentation/foundation/urlsessiontask/progress>
+/// property for numeric download progress updates. The delegate method
+/// ``AVAssetDownloadDelegate/URLSession:assetDownloadTask:willDownloadToURL:`` provides the local
+/// file URL where the system stores the asset.
///
-/// ## Live Activity
+/// > Important: Save the local file URL the delegate provides. You need it to reconstruct the
+/// > offline ``AVURLAsset`` on subsequent app launches.
///
-/// On available platforms, non-discretionary asset downloads display a Live Activity on the Lock
-/// Screen and in the Dynamic Island, providing real-time download progress to the user.
+/// To augment an existing download, initialize a new task with an ``AVURLAsset`` whose URL
+/// references the downloaded asset on disk. For example, you can add media selections that you
+/// didn't include in the original download.
///
-/// Discretionary downloads — those created with a discretionary `NSURLSessionConfiguration` — do
-/// not display a Live Activity.
+/// ### Live Activity
///
-/// When multiple downloads are active from the same application, they are aggregated
-/// into a single Live Activity that shows combined progress across all downloads.
-/// For a single active download, the activity title displays the asset title.
+/// To control how the system schedules downloads, set the
+/// <doc://com.apple.documentation/documentation/foundation/urlsessionconfiguration/isdiscretionary>
+/// property on the <doc://com.apple.documentation/documentation/foundation/urlsessionconfiguration>
+/// you pass when creating the ``AVAssetDownloadURLSession``. Non-discretionary downloads start as
+/// soon as possible. The system defers discretionary downloads until conditions like network and
+/// battery state are favorable, and runs them silently in the background.
///
-/// If any downloads in the group fail, the Live Activity transitions to a failure state once all
-/// downloads have finished. The user may also cancel all active and queued downloads for the
-/// application directly from the Live Activity. When the user cancels downloads from the Live
-/// Activity, the tasks fail with an error in the `NSCocoaErrorDomain` domain with code
-/// `NSUserCancelledError`.
+/// On supported platforms, a non-discretionary download displays a Live Activity on the Lock Screen
+/// and in the Dynamic Island that shows real-time download progress. Discretionary downloads don't
+/// display a Live Activity.
///
-/// Download tasks are not reflected in the Live Activity until they are resumed. Tasks that are
-/// resumed while the application is running in the background may be demoted to discretionary.
-/// The system will queue downloads in the order they are resumed.
+/// When your app has multiple active downloads, the system aggregates them into a single Live
+/// Activity that shows combined progress. For a single active download, the activity title displays
+/// the asset title.
///
-/// Subclasses of this type that are used from Swift must fulfill the requirements of a Sendable type.
+/// If any downloads in the group fail, the Live Activity transitions to a failure state after all
+/// downloads finish. A person can also cancel all active and queued downloads for your app directly
+/// from the Live Activity, which causes the tasks to fail with an error in the
+/// <doc://com.apple.documentation/documentation/foundation/nscocoaerrordomain> domain with code
+/// <doc://com.apple.documentation/documentation/foundation/nsusercancellederror>.
+///
+/// The Live Activity doesn't reflect download tasks until you resume them. If you resume a task
+/// while your app runs in the background, the system might demote it to discretionary. The system
+/// queues downloads in the order you resume them.
+///
+/// Swift subclasses of this type must conform to
+/// <doc://com.apple.documentation/documentation/swift/sendable>.
API_AVAILABLE(macos(10.15), ios(9.0), watchos(10.0), visionos(1.0)) API_UNAVAILABLE(tvos)
@interface AVAssetDownloadTask : NSURLSessionTask
@@ -300,32 +312,37 @@
@end
-/// A subclass of NSURLSession specialized for creating and managing AVAssetDownloadTasks.
+/// A URL session that creates and manages asset download tasks.
///
-/// AVAssetDownloadURLSession must be configured with a background NSURLSessionConfiguration to
-/// support reliable downloading while the app is suspended. Use
-/// sessionWithConfiguration:assetDownloadDelegate:delegateQueue: to create a session; standard
-/// NSURLSession initializers and task-creation methods are not available on this class.
+/// Create an ``AVAssetDownloadURLSession`` by calling
+/// ``sessionWithConfiguration:assetDownloadDelegate:delegateQueue:`` with a background
+/// <doc://com.apple.documentation/documentation/foundation/urlsessionconfiguration>. The background
+/// configuration supports reliable downloading while the app is in a suspended state.
///
-/// Background sessions persist across app launches. Downloads are managed out-of-process by the
-/// system, allowing them to continue while the app is suspended. If the system terminates the app
-/// while downloads are in progress, it will relaunch the app and call
-/// -[UIApplicationDelegate application:handleEventsForBackgroundURLSession:completionHandler:]
-/// with the session identifier. Recreate the AVAssetDownloadURLSession using the same background
+/// > Important: The standard
+/// > <doc://com.apple.documentation/documentation/foundation/nsurlsession> initializers and
+/// > task-creation methods are unavailable on this class. Use
+/// > ``sessionWithConfiguration:assetDownloadDelegate:delegateQueue:`` to create a session and
+/// > ``assetDownloadTaskWithConfiguration:`` to create download tasks.
+///
+/// Background sessions persist across app launches. The system manages downloads out-of-process so
+/// they continue while your app is in a suspended state. If the system terminates your app while
+/// downloads are in progress, it relaunches the app and calls
+/// <doc://com.apple.documentation/documentation/uikit/uiapplicationdelegate/application(_:handleeventsforbackgroundurlsession:completionhandler:)>
+/// with the session identifier. Recreate the ``AVAssetDownloadURLSession`` using the same background
/// configuration identifier to reconnect to the running session and receive pending delegate
-/// callbacks. Call the provided completion handler once all callbacks have been delivered.
-/// If the user force-quits the application, all active downloads are cancelled and the system
-/// will not relaunch the app.
+/// callbacks. Call the provided completion handler after all callbacks finish. If a person
+/// force-quits your app, the system cancels all active downloads and doesn't relaunch the app.
///
-/// The background session configuration can be marked as discretionary, allowing the system to
-/// schedule downloads at an optimal time based on network conditions and battery level.
-/// Non-discretionary download tasks can only be initiated while the application is running in the
-/// foreground. Reserve non-discretionary sessions for downloads that are explicitly initiated by
-/// the user; any opportunistic downloading that occurs without the user's direct awareness should
-/// use a discretionary session.
+/// Mark the background session configuration as discretionary to let the system defer downloads
+/// until network and battery conditions are favorable. You can only start a non-discretionary
+/// download task while your app is in the foreground. Reserve non-discretionary sessions for
+/// downloads that a person explicitly starts. Use a discretionary session for opportunistic
+/// downloads that happen without a person's direct involvement.
///
-/// Assign an AVAssetDownloadDelegate to the session to receive download progress, media selection
-/// resolution, and completion callbacks across all tasks created by the session.
+/// Assign an ``AVAssetDownloadDelegate`` to the session to receive download progress,
+/// media-selection resolution, and completion callbacks for every download task the session
+/// creates.
API_AVAILABLE(macos(10.15), ios(9.0), watchos(10.0), visionos(1.0)) API_UNAVAILABLE(tvos)
@interface AVAssetDownloadURLSession : NSURLSession
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h 2026-08-08 18:02:56
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h 2026-10-04 02:26:35
@@ -574,6 +574,18 @@
AVF_EXPORT AVCaptureDeviceType const AVCaptureDeviceTypeBuiltInUltraWideCamera API_AVAILABLE(ios(13.0), macCatalyst(14.0), tvos(17.0)) API_UNAVAILABLE(macos, visionos) API_UNAVAILABLE(watchos);
/*!
+ @constant AVCaptureDeviceTypeBuiltInOuterUltraWideCamera
+ A built-in outer ultra wide camera device. Note that devices of this type may only be discovered using an AVCaptureDeviceDiscoverySession.
+ */
+AVF_EXPORT AVCaptureDeviceType const AVCaptureDeviceTypeBuiltInOuterUltraWideCamera API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
+
+/*!
+ @constant AVCaptureDeviceTypeBuiltInInnerUltraWideCamera
+ A built-in inner ultra wide camera device. Note that devices of this type may only be discovered using an AVCaptureDeviceDiscoverySession.
+ */
+AVF_EXPORT AVCaptureDeviceType const AVCaptureDeviceTypeBuiltInInnerUltraWideCamera API_AVAILABLE(ios(27.1)) API_UNAVAILABLE(macos, macCatalyst, tvos, visionos) API_UNAVAILABLE(watchos);
+
+/*!
@constant AVCaptureDeviceTypeBuiltInDualCamera
A device that consists of two fixed focal length cameras, one wide and one telephoto. Note that devices of this type may only be discovered using an AVCaptureDeviceDiscoverySession or -[AVCaptureDevice defaultDeviceWithDeviceType:mediaType:position:].
@@ -3967,7 +3979,9 @@
/// A class property indicating whether the Edge Light feature is currently enabled in Control Center.
///
-/// This readonly property changes to reflect the Edge Light state in Control Center. It is key-value observable.
+/// This readonly property changes to reflect the Edge Light state in Control Center. It is key-value observable. On iOS, Edge Light only applies to video conferencing apps by default (apps that use "voip" as one of their UIBackgroundModes). Non video conferencing apps may opt in for Edge Light by adding the following key to their Info.plist:
+/// <key>NSCameraEdgeLightEnabled</key>
+/// <true/>
@property(class, readonly, getter=isEdgeLightEnabled) BOOL edgeLightEnabled API_AVAILABLE(macos(26.2), ios(26.2), macCatalyst(26.2), tvos(26.2)) API_UNAVAILABLE(visionos) API_UNAVAILABLE(watchos);
/// A class property indicating whether the edge light UI is actively being shown on a screen.
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h 2026-08-08 17:55:47
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureSession.h 2026-09-11 23:51:14
@@ -1274,7 +1274,7 @@
/// Indicates whether the connection supports low light video noise reduction.
///
-/// This property returns `true` if the connection's source device's active format supports low light video noise reduction (see ``AVCaptureDeviceFormat/isLowLightVideoNoiseReductionSupported``) and the connection's output supports the feature. This value reflects the active configuration and can change as the active format, video stabilization mode or auto video frame rate changes. See ``automaticallyEnablesLowLightVideoNoiseReduction`` for a detailed discussion. This property is key-value observable.
+/// This property returns `true` if the connection's source device's active format supports low light video noise reduction (see ``AVCaptureDeviceFormat/isLowLightVideoNoiseReductionSupported``) and the connection's output supports the feature. This value reflects the active configuration and can change as the active format, video stabilization mode, auto video frame rate, or maximum video frame rate changes. See ``automaticallyEnablesLowLightVideoNoiseReduction`` for a detailed discussion. This property is key-value observable.
@property(nonatomic, readonly, getter=isLowLightVideoNoiseReductionSupported) BOOL lowLightVideoNoiseReductionSupported API_AVAILABLE(macos(27.0), ios(27.0), macCatalyst(27.0), tvos(27.0), visionos(27.0)) API_UNAVAILABLE(watchos);
/// Indicates whether the connection should automatically enable low light video noise reduction when the connection supports it.
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h 2026-08-15 22:22:45
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVMediaFormat.h 2026-09-11 23:45:02
@@ -215,6 +215,16 @@
/// Also see -[AVAssetTrack hasMediaCharacteristic:] and -[AVMediaSelectionOption hasMediaCharacteristic:].
AVF_EXPORT AVMediaCharacteristic const AVMediaCharacteristicDescribesVideoForAccessibility API_AVAILABLE(macos(10.8), ios(5.0), tvos(9.0), watchos(1.0), visionos(1.0));
+/// A media characteristic that indicates that a track or media selection option provides a sign language interpretation of the spoken dialog and other significant aspects of the presentation.
+///
+/// See -[AVAssetTrack hasMediaCharacteristic:] and -[AVMediaSelectionOption hasMediaCharacteristic:].
+/// The value of this characteristic is @"public.accessibility.sign-language-interpretation".
+/// Note for content authors: for QuickTime movie and .m4v files a media option is considered to have the characteristic AVMediaCharacteristicSignLanguageInterpretationForAccessibility only if it's explicitly tagged with that characteristic.
+/// See the discussion of the tagging of tracks with media characteristics below.
+///
+/// Also see -[AVAssetTrack hasMediaCharacteristic:] and -[AVMediaSelectionOption hasMediaCharacteristic:].
+AVF_EXPORT AVMediaCharacteristic const AVMediaCharacteristicSignLanguageInterpretationForAccessibility API_AVAILABLE(anyappleos(27.1));
+
/// A media characteristic that indicates that a track or media selection option contains a language or dialect translation of originally or previously produced content, intended to be used as a substitute for that content by users who prefer its designated language.
///
/// See -[AVAssetTrack hasMediaCharacteristic:] and -[AVMediaSelectionOption hasMediaCharacteristic:].
diff -ruN /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVRouteDetector.h /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVRouteDetector.h
--- /Applications/Xcode_27.1.0.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVRouteDetector.h 2026-08-08 17:41:29
+++ /Applications/Xcode_27.2.0-beta3.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/AVFoundation.framework/Headers/AVRouteDetector.h 2026-09-11 23:40:29
@@ -52,7 +52,7 @@
@discussion
Only set this to YES if also using AVCustomRoutingController.
*/
-@property (nonatomic) BOOL detectsCustomRoutes API_AVAILABLE(ios(16.0), visionos(1.0)) API_UNAVAILABLE(macos, tvos, watchos);
+@property (nonatomic) BOOL detectsCustomRoutes API_DEPRECATED("Please use AVSystemRouting", ios(16.0, 27.0), visionos(1.0, 27.0)) API_UNAVAILABLE(macos, tvos, watchos);
/*!
@constant AVRouteDetectorMultipleRoutesDetectedDidChangeNotification