本篇文章共分為三個(gè)部分,讀者可根據(jù)需要直接閱讀對(duì)應(yīng)部分:
1. iOS 對(duì)NFC支持的現(xiàn)狀
2.NFC基本概念與相關(guān)術(shù)語(yǔ)
3.iOS NFC 開(kāi)發(fā)實(shí)踐
下面是正文:
一赌蔑、iOS 對(duì)NFC支持的現(xiàn)狀
2017年帮寻,WWDC正式發(fā)布了iOS11,在SDK中首次開(kāi)放了NFC功能,開(kāi)發(fā)者可通過(guò)Core NFC FrameWork 使用NFC功能字币。不過(guò)不要高興太早耐亏,此次發(fā)布的版本支持的功能非常保守转晰,只支持 NFC Tag Reading 功能龟糕。
支持機(jī)型:
?iPhone 7 及后續(xù)發(fā)布機(jī)型(雖然iPhone 6開(kāi)始已經(jīng)有NFC硬件桐磁,但是Apple 出于某些原因,6讲岁,6plus不開(kāi)發(fā)此功能)
支持方式:
?iOS 11 需要安裝APP才能使用(安卓系統(tǒng)已經(jīng)內(nèi)建了支持)我擂,APP使用NFC時(shí)需要主動(dòng)打開(kāi)一個(gè)session才能進(jìn)行讀取tag,并且APP必須在前臺(tái)(foreground)狀態(tài)下催首,一旦APP進(jìn)入background或退出扶踊,session將自動(dòng)終止(安卓則可以在后臺(tái)一直進(jìn)行輪詢)。
二郎任、NFC基本概念與相關(guān)術(shù)語(yǔ)
NFC是什么東東秧耗?
全稱?Near Field Communication (近場(chǎng)通訊),這個(gè)技術(shù)由非接觸式射頻識(shí)別(RFID)演變而來(lái)舶治,由飛利浦半導(dǎo)體(現(xiàn)恩智浦半導(dǎo)體公司)分井、諾基亞和索尼共同研制開(kāi)發(fā)车猬,其基礎(chǔ)是RFID及互連技術(shù)。近場(chǎng)通信(Near Field Communication,NFC)是一種短距高頻的無(wú)線電技術(shù)尺锚,在13.56MHz頻率運(yùn)行于10厘米距離內(nèi)珠闰。
NFC Tag?
NFC tags are cheap, passive RFID tags that are stuck on, or embedded into products, packaging, promotional items and many other physical things。
可以看到它是廉價(jià)的瘫辩、被動(dòng)式的RFID(射頻識(shí)別)Tag,粘貼或內(nèi)嵌如產(chǎn)品伏嗜,包裹,促銷品及許多其他實(shí)物伐厌,甚至像電影里一樣嵌入皮膚承绸。那么問(wèn)題又來(lái)了RFID Tags 是什么?
RFID Tag?
它由耦合元件及芯片組成挣轨,每個(gè)RFID標(biāo)簽具有唯一的電子編碼(全球唯一哦??)军熏,附著在物體上標(biāo)識(shí)目標(biāo)對(duì)象,俗稱電子標(biāo)簽或智能標(biāo)簽卷扮。RFID電子標(biāo)簽:有源標(biāo)簽荡澎,無(wú)源標(biāo)簽,半有源半無(wú)源標(biāo)簽晤锹。普通用的地鐵卡就是無(wú)源標(biāo)簽摩幔。 什么編碼這么牛X, 全球唯一?是EPC編碼抖甘。
EPC編碼热鞍?
EPC(Electronic Product Code)即電子產(chǎn)品編碼,是一種編碼系統(tǒng)衔彻。它建立在EAN.UCC(即全球統(tǒng)一標(biāo)識(shí)系統(tǒng))條型編碼的基礎(chǔ)之上薇宠,并對(duì)該條形編碼系統(tǒng)做了一些擴(kuò)充,用以實(shí)現(xiàn)對(duì)單品進(jìn)行標(biāo)志艰额。
它是下一代產(chǎn)品標(biāo)識(shí)代碼澄港,它可以對(duì)供應(yīng)鏈中的對(duì)象(包括物品、貨箱柄沮、貨盤(pán)回梧、位置等)進(jìn)行全球唯一的標(biāo)識(shí)。EPC 存儲(chǔ)在RFID標(biāo)簽上祖搓,這個(gè)標(biāo)簽包含一塊硅芯片和一根天線狱意。讀取 EPC標(biāo)簽時(shí),它可以與一些動(dòng)態(tài)數(shù)據(jù)連接拯欧,例如該貿(mào)易項(xiàng)目的原產(chǎn)地或生產(chǎn)日期等详囤。EPC所標(biāo)識(shí)產(chǎn)品的信息保存在EPCglobal網(wǎng)絡(luò)中,而EPC則是獲取有關(guān)這些信息的一把鑰匙。
WWDC解釋:
NFC實(shí)際上是一組不同的標(biāo)準(zhǔn)和協(xié)議藏姐。所有的標(biāo)準(zhǔn)共存隆箩,并用于不同的目的。
NFC text可歸納為5類羔杨,type1~type5.每一個(gè)類型對(duì)應(yīng)于一個(gè)不同的標(biāo)準(zhǔn)捌臊。
NFC Forum定義了NFC Data Exchange Format(NDEF)用來(lái)作為不同的NFC text類型數(shù)據(jù)交換的通用標(biāo)準(zhǔn)方式
使用場(chǎng)景:
上面一堆解釋,第一次聽(tīng)絕對(duì)是云里霧里的兜材,不過(guò)看看它能干什么就有整體印象了理澎。下面描述的是NFC的使用場(chǎng)景(不限于iOS,其中部分功能iOS不支持)
NFC工作模式有三種:
1.Reader/Writer mode(讀寫(xiě)器模式)iOS只支持reader模式
此模式可以讀取NFC Tag,也可寫(xiě)入Tag數(shù)據(jù)曙寡。(可以想象手機(jī)給地鐵卡充值矾端,它能讀取卡內(nèi)信息,也能寫(xiě)入數(shù)據(jù))卵皂,蘋(píng)果給出的使用的場(chǎng)景1.連接用戶到位置或上下文相關(guān)的內(nèi)容2.連接硬件設(shè)備3.倉(cāng)庫(kù)庫(kù)存追蹤。
2.Peer-to-Peer mode (點(diǎn)對(duì)點(diǎn)模式)? iOS 不支持
將兩個(gè)具備NFC功能的設(shè)備鏈接砚亭,能實(shí)現(xiàn)數(shù)據(jù)點(diǎn)對(duì)點(diǎn)傳輸灯变,如下載音樂(lè)、交換圖片或者同步設(shè)備地址薄捅膘。
3.Card-emulation mode (卡模擬模式)iOS不支持
可以將具備NFC功能的設(shè)備當(dāng)做只能卡或者IC卡添祸,比如地鐵卡,信用卡寻仗,門(mén)禁卡刃泌。
NFC是怎么檢測(cè)到Tag的?
在NFC Tag(它是一種廉價(jià)署尤、被動(dòng)式的RFID tag, 就是一個(gè)集成電路)中有天線與電路耙替。當(dāng)拿具備NFC功能的手機(jī)或其他讀取器靠近時(shí),手機(jī)或讀取器發(fā)射高頻電磁波(射頻信號(hào))曹体,引發(fā)Tag內(nèi)的電路產(chǎn)生感應(yīng)電流(卡內(nèi)沒(méi)有電源俗扇,全靠讀取器發(fā)射的電磁波產(chǎn)生電流驅(qū)動(dòng)),Tag利用產(chǎn)生的電流發(fā)射出Tag內(nèi)存儲(chǔ)是數(shù)據(jù)箕别。
三铜幽、iOS NFC 開(kāi)發(fā)實(shí)踐
過(guò)程很簡(jiǎn)單,不過(guò)需要注意一些方面:
1.tag reading是按需的串稀,你需要自己?jiǎn)?dòng)一個(gè)tag reading操作除抛。
2.tag reading session需要在foreground時(shí)啟動(dòng)。
3.應(yīng)用進(jìn)入后臺(tái)或退出母截,session將終止到忽。
4.每個(gè)session最多持續(xù)60秒,超時(shí)將終止微酬。
5.可配置session讀取一個(gè)tag或多個(gè)tag,當(dāng)設(shè)置讀取一個(gè)tag時(shí)绘趋,讀完后session自動(dòng)終止颤陶,若讀取多個(gè)tag,則會(huì)持續(xù)直到用戶取消或超過(guò)60秒。
6.session終止后陷遮,若要再讀取滓走,需要?jiǎng)?chuàng)建一個(gè)新的session并開(kāi)啟。
7.info.plist中設(shè)置的描述將在讀取時(shí)顯示給用戶帽馋。
開(kāi)發(fā)配置:
配置項(xiàng)目:2個(gè)步驟
1.需要在Xcode打開(kāi)Near Field Communication Tag Reading Capability(剛發(fā)布的xcode中不含此選項(xiàng)搅方,請(qǐng)自行添加)
2.info.plist設(shè)置隱私選項(xiàng)Scan UsageDescription
開(kāi)發(fā): 2個(gè)步驟
1.設(shè)置一個(gè)delegate adopt NFCNDEFReaderSessionDelegate Protocol
2.創(chuàng)建一個(gè)NFCNDEFReaderSession,調(diào)用begin方法
3.實(shí)現(xiàn)代理方法,處理對(duì)應(yīng)回調(diào)绽族。
最后附上相關(guān)參考資料: