I write a custom content consisting of 3 NDEF records (URL, Custom, Custom) onto a NFC tag. Such a tag is readable by both Android and iOS, no problems.
Now I increase the size of the URL, so naturally only URL NDEF record changes and the NDEF is no longer readable by iOS - receiving empty NDEF record list.
This looks very weird - if I pad the URL to a couple of characters it becomes readable (yet this is not a solution to me as the NDEF content is limited).
Tried with different iPhones (iOS 15, iOS 16). Tag of ISO 15693.
Manually validated NDEF record - all fields look good and consistent. There is an online NDEF checker it also gives no problems.
I am totally lost. Any ideas?
Well it required A LOT OF EFFORTS. Hope the related Apple engineer (engineers) will find this question and ask questions to themsselves.
So problem was generally with ISO 15693 tags. Those include additionally so called Capability Container - a 4 byte field at the user address 0x0. This header includes "size of content" expressed in 8-byte chunks. So real size divided by 8. In my case it was 0x12 which meant 0x24 blocks - AND - my content was exactly this size. So technically no specification violation is observed. Yet tags were not readable (specifically, NDEF message not recognized).
I have increased the content size to 1 unit (+8 bytes) and everything started to work.