AVPlayerItem externalMetadata unrecognized selector

298 Views Asked by At

This piece of code is crashing on iOS 12 with unrecognised selector exception:

[AVPlayerItem externalMetadata]: unrecognized selector sent to instance

However, this code is not crashing on iOS 13.

Apple documentation states that AVPlayerItem has externalMetadata getter and setter since iOS 12.


    let item = AVPlayerItem(url: videoURL)

    let mutableMetadataItem = AVMutableMetadataItem()
    mutableMetadataItem.identifier = AVMetadataIdentifier.commonIdentifierDescription
    mutableMetadataItem.value = 1
    item.externalMetadata.append(mutableMetadataItem)

Could you please help me to understand why is that happening?

1

There are 1 best solutions below

0
matt On BEST ANSWER

externalMetadata was introduced in iOS 13. That fact is explicitly called out in the relevant WWDC 2019 video. Simply put, the docs (or the availability tags) are wrong — and the result of the mistake is that you are permitted to use externalMetadata in a context (iOS 12) where it is actually absent, and so you crash.