Posts

Post not yet marked as solved
0 Replies
128 Views
For whoever needs to hear this... Say you have an AVURLAsset: let asset = AVURLAsset(url: URL(string: "https://www.example.com/playlist.m3u8")!) Then say you load that asset into an AVPlayerItem, and would like it to automatically load certain asset keys you're interested in ahead of time: let playerItem = AVPlayerItem( asset: avURLAsset, automaticallyLoadedAssetKeys: [ "metadata", "commonMetadata", "availableMetadataFormats", "allMediaSelections", "hasProtectedContent", "overallDurationHint"]) Among those keys, do not use "tracks" even though it's one of the available options. That will break AirPlay across all platforms (the user chooses an AirPlay destination and the AVPlayerItem's status instantly switches to failed). Took me far too long to track this down, just wanted to get it out there to save anybody else some time if they ever run into it.
Posted
by Suges.
Last updated
.
Post not yet marked as solved
2 Replies
288 Views
I'm just putting this here for visibility, I already submitted FB13688825. If you say this: Task { for await tracks in avPlayerItem.publisher(for: \.tracks, options: [.initial]).values { print("*** fired with: \(tracks.description)") } } ...it fires once with: "*** fired with: []" If you say this: avPlayerItem.publisher(for: \.tracks).sink { [weak self] tracks in print("*** fired with: \(tracks.description)") }.store(in: &subscriptions) ...you get, as expected, multiple fires, most with data in them such as: *** fired with: [<AVPlayerItemTrack: 0x10a9869a0, assetTrack = <AVAssetTrack: 0x10a9869f0... I think it's a bug but I'm just going to go back to the "old way" for now. No emergency.
Posted
by Suges.
Last updated
.
Post not yet marked as solved
0 Replies
285 Views
Hello there, I understand most components of the FairPlay Streaming Server SDK haven't been updated in about a decade, but the verify_ckc tool no longer works, and it's really helpful. It throws errors when trying to import the Crypto library...probably something to do with this whole Python 2 vs Python 3 thing. I don't know anything about Python or I'd try to fix it myself but...I'm just bringing this up in case anyone from the FairPlay team reads these things! Thx
Posted
by Suges.
Last updated
.
Post marked as solved
2 Replies
885 Views
(Sometimes I think I'm the only person who's actually using the new Xcode multiplatform app paradigm! So hard finding info on the various "gotchas".) My multiplatform app supports macOS (not Catalyst), iOS, iPadOS, and tvOS. It's an internal testing app, never meant to be on any app store. It has only one Target (the new multiplatform target). I've been able to work through all the teething issues except for Entitlements. My iOS and tvOS app both use 3 entitlements that are for those platforms only. The macOS version doesn't need or want them. But if those 3 entitlements are in the .entitlements file, the macOS version won't launch at all (not even in the sim). Of course as soon as I take those 3 entitlements out of the file, it runs. Sooo...in a multiplatform targeted app how do you specify different entitlements for different platforms? Or is it not possible? Thanks!
Posted
by Suges.
Last updated
.
Post not yet marked as solved
0 Replies
443 Views
Hi, In this article here: https://developer.apple.com/documentation/xcode/interacting-with-your-app-in-the-tvos-simulator#Navigate-using-a-physical-remote-control ...it gives steps on how to pair the Siri Remote so that it works with the simulator. However, when I follow the steps, the remote shows up in the Bluetooth list as a "generic device" only labelled by its serial number, and it definitely can't control the simulator. Just me?
Posted
by Suges.
Last updated
.
Post not yet marked as solved
3 Replies
579 Views
Hello there, I'd like to add a custom URL scheme to my app (whose target is configured as a multiplatform app). Usually we do this by going to project settings, select the target, click the Info tab, and disclose the URL Types heading, but that's missing when the target is multiplatform. I'm able to create an all-new target that does have the heading, but that seems to be defeating the purpose. If you've got any ideas I'd appreciate it! Thanks
Posted
by Suges.
Last updated
.