Core NFC

预研NFC

在预研公司L28T手环用NFC来上课签到上课的功能,看完供应商提供的芯片文档,得知苹果要求的NFC数据格式,MF1 S50-5.1芯片不支持。S50的芯片的NFC tag是MIFARE Classic,所以当手机感应手环里面的NFC时并没有任何反应。
但是手机依然可以感应到打卡机的NFC,是因为有些打卡机是S50,有些是CPU卡。

iPhone的NFC本身支持卡模拟功能。

NTAG213 芯片是符合苹果要求的Tag

Core NFC_第1张图片
iOS的NFC所支持的格式

预研NFC遇到的bug

    1. Session is invalidated unexpectedly" UserInfo={NSLocalizedDescription=Session is invalidated unexpectedly}
2017-12-20 14:43:12.265489+0800 
NFC[1571:338181] 
[CoreNFC] 00000001 c00e3f00 -[NFCNDEFReaderSession beginSession]:253  errorCode: 0xca

2017-12-20 14:43:12.266788+0800
 NFC[1571:338244] 
 error---
Error Domain=NFCError Code=202 "
Session is invalidated unexpectedly" 
UserInfo={NSLocalizedDescription=Session is invalidated unexpectedly}

  • 2.如1所示的错误,是因为没有配置 NFC 的 entitlements 配置了之后报错 "Feature not supported"
2017-12-20 15:04:29.033036+0800 NFC[1588:343572] 
refreshPreferences: HangTracerEnabled: 0
2017-12-20 15:04:29.033085+0800 NFC[1588:343572] 
refreshPreferences: HangTracerDuration: 500
2017-12-20 15:04:29.033102+0800 NFC[1588:343572] 
refreshPreferences: ActivationLoggingEnabled: 0 ActivationLoggingTaskedOffByDA:0
2017-12-20 15:04:31.606438+0800 NFC[1588:343596] 
[CoreNFC] 00000001 c40ee800 -[NFCNDEFReaderSession beginSession]:253
  errorCode: 0x1
2017-12-20 15:04:31.606976+0800 NFC[1588:343594]  
error---Error Domain=NFCError Code=1
 "Feature not supported" 
UserInfo={NSLocalizedDescription=Feature not supported}


咨询NFC硬件供应商的问题

  • 1.NFC交互的数据格式是什么?iOS暂时只支持NDEF
    • 1.NFC交互的数据格式就是NDEF格式。iOS暂时只支持NDEF,就是NFC标签里面的数据需要写成NDEF格式才能读取。
  • 2.为什么用手机NFC读手环的时候 没反应,但是读门禁的时候有,他们两个的nfc 是有啥区别吗?
    • 2.能读门禁,不能读手环,这个很难确定原因,一般可能是下面几个问题:
      门禁和手环的芯片不同;手环的天线小,读距较低。
    1. NFC tag 是什么?例如L28T里面的一个芯片+NFC天线就是了
      1. NFC tag是指符合NFC协议的高频芯片。L28T(MF1S50)也是高频芯片,不过是非标的NFC芯片,可能有部分手机是读不了的,但是感应是可以
    1. 怎么拿到NFC交互的数据格式?
      1. NFC有个官方网站,https://nfc-forum.org/,上面可以下载相关文件,不过有些需要权限,其实一般的文档,直接上网搜就有
    1. 怎么看NFC的数据交互?
      1. 推荐android的一个APP,NXP的tagInfo,可以查看标签信息
    1. 手机实现打卡的功能
      1. 手机实现打卡功能,一般使用的是卡模拟模式
    1. 手机NFC 读写功能
      1. 读写可以用app实现,读:taginfo,写:tagwriter

补充

  • L28T使用的芯片是MIFARE CLASSIC也可以用NfcA的标准来解析的,当然视手机而定。
  • 芯片型号是:MF1S50,如有里面有数据格式的话,自己定的。供应商是没有写入任何数据的
  • 那个NFC tag Type 2是 MIFARE Ultralight 和MIFARE 有区别,也就是说s50芯片苹果不支持,无法感应也没有任何提示。
  • S50的话,一般只有使用NXP的NFC控制芯片才能读取的
  • 供应商Type 2的芯片有几款的,Ultralight,NTAG21X等都符合,看是否换芯片
  • android的话,如果NFC手机不支持S50的话,会提示本手机不支持此类型
    苹果就直接对不支持的类型不做任何反应

    1. NFC Swift 视频学习
    1. WWDC Core NFC介绍
    1. S50芯片说明书

你可能感兴趣的:(Core NFC)