Detect multiple NFC tag types including NDEF?

Hi,

Relatively new to NFC, but have prototyped a reader/writer. I have a bunch of MiFare Classic, but these aren't being detected so I assume they're unsupported? I also have some MiFare DESFire tags, which are detected using an NFCTagReaderSession, but not NFCNDEFReaderSession.

Code Block
tag reader became active
tag reader did detect tags
[tag] Optional(CoreNFC.NFCTag.miFare(<NFCMiFareTag: 0x282ab8b40>))
family:  NFCMiFareFamily
2020-07-26 15:50:38.651264+0100 Vendor[815:147466] [CoreNFC] 00000002 80ae4900 -[NFCTagReaderSession setAlertMessage:]:92  (null)
tag read invalidated

Is it possible to detect any tags, and then work out if they're NDEF capable or not? It seems we have to use a NFCTagReaderSession or NFCNDEFReaderSession, which means choosing physical tag type way ahead of writing an app?

I guess I'm confused with NDEF v 'native' types, as described in the Apple docs. Even though the tag claims to support NDEF, it would be useless in a real world situation (if I implemented an app using the more general NFCNDEFReaderSession). Especially if you can't just overwrite a tag with NDEF data.

This seems weird, as everything (incl WWDC) talks about starting out with using the NDEF implementation. Do tags need to be correctly formatted at the factory, either NDEF or MiFare?

thanks,