We have a flutter based mobile app, and a Raspberry (which communicate with the backend) with a nfc reader module (it mifare compatible). Now working with physical RFID cards, and the expected operation is if someone's mobile device compatible with it they can read the mobile device nfc data without opening any mobile app and the backend can analyse that, and can determine the user and selecting the user profile in backend.

In Android you can use the built-in NFC module with api - even in idle mode - ie without opening the app.

In iOS - a little more complicated - before iOS15, apple only allowed the built-in NFC module to be used for banking transactions. In iOS15, however, there is already an api function that can be used in idle mode to emulate an “access” NFC card.

So my question if the mobile can send NFC data without opening the mobile app, then how can analyse the raw data in backend after got from the raspberry?

My opinion is that it can't work without opening the mobile app, because the mobile app must running if you want to send or receive nfc data.


Solution 1: Andrew

On Android you can do this yourself with Host Card Emulation (HSE) but with iOS you cannot.

But for both you could do it without opening an App on both by integrating to Apple's and Google's wallet systems (Using something like https://passkit.com/ ) as then you can have something like a contactless bank/loyalty card stored inbuilt wallet system.

I would forget using anything Mifare as this is a proprietary technology and not support by some phones, you should be targetting NFC Forum compliant Technology, more Specifically NFC Type 4 as used by contactless bank cards.