Posts

Post not yet marked as solved
0 Replies
235 Views
I've got some C++ code with Doxygen documentation comments (the /**-style kind), and I'd love it if those showed up in Xcode's code completion. They do show up in Quick Help. And the triple-slash style documentation comments do show up in code completion. Anyone know how to make this work? Filed as Feedback FB7824467 with a sample project and screenshots.
Posted Last updated
.
Post marked as solved
1 Replies
2.8k Views
In Session 301 of WWDC 2019, there was a new Transporter tool announced that replaces Application Loader. Sure enough, in the Xcode 11 GM, Application Loader is gone. But I can't figure out where to get Transporter. It's not bundled in Xcode, it's not in the applications list on the developer download page, and I can't find discussion of it online. I tried downloading and running the installer for the latest version of the Transporter command-line tool, and didn't get a new app installed. It's not mentioned anywhere in the Xcode release notes.What am I missing? Where do I find the new Transporter?https://developer.apple.com/videos/play/wwdc2019/301/?time=107
Posted Last updated
.
Post not yet marked as solved
0 Replies
768 Views
Cross-posted from https://stackoverflow.com/questions/52447888/how-can-i-play-fairplay-encrypted-audio-on-an-applewatch-with-watchos-5watchOS 5 supports a new background audio mode so that audio apps (Audible, Overcast, etc) can play from the watch directly. I'm working on audio functionality for my app, but I have to use FairPlay DRM. I have segmented aac audio files with .m3u8 playlists, and I'm downloading them using [AVAssetDownloadTask](https://developer.apple.com/documentation/avfoundation/avassetdownloadtask?language=objc) and do FairPlay key stuff with [AVAssetResourceLoaderDelegate](https://developer.apple.com/documentation/avfoundation/avassetresourceloaderdelegate?language=objc) on the iPhone. And I'd like to add a watch app to play my content without the phone present.But I don't see anything like this on the watch APIs. AVAssetResourceLoaderDelegate and [AVContentKeySession](https://developer.apple.com/documentation/avfoundation/avassetresourceloaderdelegate?language=objc) aren't available on watchOS, and [AVAudioPlayer](https://developer.apple.com/documentation/avfoundation/avaudioplayer?language=objc) doesn't take an AVAsset or seemingly any other way to do FairPlay key stuff (I use [AVPlayer](https://developer.apple.com/documentation/avfoundation/avplayer?language=objc) on the phone).In the [Creating Audio Apps for watchOS](https://developer.apple.com/videos/play/wwdc2018/504/?time=1069) session at WWDC 2018, the presenter says:> And in the case of AVAudioEngine, you can actually play some DRM content in conjunction with AVAudioPlayer node. And so you can now play your own DRM content, decrypt it yourself, and play it back for your user.But I haven't found anything yet about [AVAudioEngine](https://developer.apple.com/documentation/avfoundation/avaudioengine?language=objc) and FairPlay audio.I've looked into [AVAudioExportSession](https://developer.apple.com/documentation/avfoundation/avassetexportsession?language=objc) to try to transcode my FairPlay content to MP3 or AAC or M4A or something that I can transfer to the watch, but it doesn't think any formats are compatible: AVAsset *asset = [self getDownloadedFairplayAsset]; NSArray<NSString *> *possible = [AVAssetExportSession exportPresetsCompatibleWithAsset:asset]; for (NSString *preset in possible) { AVAssetExportSession *session = [AVAssetExportSession exportSessionWithAsset:asset presetName:preset]; [session determineCompatibleFileTypesWithCompletionHandler:^(NSArray<AVFileType> * _Nonnull compatibleFileTypes) { NSLog(@"Compatible types with %@: %@", preset, compatibleFileTypes); //this is always an empty array }]; }So, my question: <b>How can I play FairPlay-encrypted audio on a watchOS 5 app?</b>
Posted Last updated
.
Post not yet marked as solved
1 Replies
1.8k Views
HLS offline playback was announced at this session in WWDC 2016, in iOS 10. But at about the 21:20 mark, the presenter is talking about how the downloaded files shouldn't be moved from where the AVAssetDownloadTask puts them, because the system might need to delete them if disk space is low. This possibility is also mentioned here in the documentation:Important: If available disk space is extremely low, the operating system may automatically delete downloaded assets. Before you present to the user that an asset is available for playback, verify that the asset exists and is playable offline.I'm building an app to play DRM'd audio content with HLS, and I want to support both streaming and downloading, so the user can save the files they want for offline playback. But if the downloaded files get deleted without the user's permission, it's kind of a crap experience.So my question: how can I prevent the system from deleting downloaded files? Can I just move them, even though the documentation explicitly says not to? Is there a different way I can download the files? There is a new class in iOS 11, AVAssetDownloadStorageManager, that supports setting a storage management policy to default or important...is there any guarantee that the system won't delete "important" downloaded media without at least asking the user first? Roger Pantos says in Advances in HTTP Live Streaming at WWDC 2017 that the system might delete assets to make space for a software update after asking the user, but that statement doesn't mean assets won't get delete automatically for other reasons.
Posted Last updated
.
Post not yet marked as solved
0 Replies
965 Views
I need to know what the Uniform Type Identifier is for an AAC audio file.Context: I'm building an audio player app that plays DRM'd AAC files using HLS. I want to support offline playback, but I don't want to use AVFoundation's offline stuff (via AVAssetDownloadTask) because it'll delete the files out from under me when it needs to reclaim disk space (according to this presentation at WWDC 2016). So I'm downloading the files myself and using AVAssetResourceLoaderDelegate (walkthrough here) to serve files from the disk instead of the network when I want to. But the player just buffers forever. I tried serving a plain, unecrypted AAC file with no HLS involvement, and it failed the same way. I tried a plain, unencrypted MP3 file, and it worked. I changed the UTI provided to loadingRequest.contentInformationRequest.contentType in resourceLoader:shouldWaitForLoadingOfRequestedResource: from the correct audio.mp3 to audio.aac and it failed the same way. From this I infer that what I need is the correct UTI for an AAC file.Also posted on StackOverflow:https://stackoverflow.com/questions/49619668/what-is-the-uti-uniform-type-identifier-of-an-aac-audio-file-on-ios
Posted Last updated
.