Open TijnvandenEijnde opened 4 months ago
Sorry for replying late. I see your thread on https://forums.developer.apple.com/forums/thread/758018 and https://github.com/okadan/flutter-nfc-manager/issues/197. But Apple does not seem to solve your problem either.
Our usage of CoreNFC APIs are not complex: https://github.com/nfcim/flutter_nfc_kit/blob/277302081ce70d3ab5aec06f1277854887e2f79c/ios/Classes/SwiftFlutterNfcKitPlugin.swift#L145-L156
I suggest that you try with native code first. If that does not work, neither flutter library can do much.
I have created a mobile application to scan Mifare DESFire cards on Android and iOS. On both platforms, I can get the basic information on the card. However, only on Android, I can read data from the card by using Mifare commands. On iOS I am getting a
0B
response.I have the following configuration inside my
Runner.entitlements
:I have added the following keys inside my
Info.plist
file:However, I have noticed that I will get a different response if I add the
D2760000850100
key in theInfo.plist
file. When I have this key added I get an error when executing a Mifare command:PlatformException(500, Communication error, Tag response error, null)
So for that reason, I decided to remove the key altogether. Now everytime, I execute a Mifare command I end up with the response of
0B
. Which does not tell me anything because it is not an official response.The Mifare command I am using is the select application command:
5A123456
where123456
is the application ID. As mentioned before this works perfectly on Android.The only response I can get from the Mifare DESFire card is with an ISO7816 command:
00A4040006D2760000850100
. Which is the select application command according to the iso7816 standard. However, after executing this command I need to authenticate, which requires a complex algorithm.Is it necessary on iOS to first execute iso7816 commands, before you can execute Mifare commands?