31
iOS Swift 之 iBeacon 之之之之之之之之

iOS swift 之 iBeacon 藍芽應用開發學習

  • Upload
    -

  • View
    258

  • Download
    11

Embed Size (px)

Citation preview

Page 1: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon藍芽應用開發學習

Page 2: iOS swift 之 iBeacon 藍芽應用開發學習

學習主題• 社群成立目的簡介• 自我介紹與哈啦• 功力複習• 程式實作 (Swift)

• 問題與交流

Page 3: iOS swift 之 iBeacon 藍芽應用開發學習

社群成立目的簡述:  諸葛魔斌來自只會拼觀光的資訊沙漠城市,也不是正統資訊相關背景出身,在程式設計領域算是半調子,靠著自學與個人摸索,在沙漠城市中奮戰不懈。懷抱著讓資訊沙漠城市的子弟能無門檻的學習,輕鬆簡單的跨入資訊程式的領域的癡傻夢想的非主流程式創作者成立目的:  為有心想要進入程式設計的門檻,並共同在資訊科技這個領域一起努力學習的朋友所成立的社團。這裡沒有資訊人藏步的銅牆鐵壁,只要願意在荒漠台灣努力,不僅看得到釣竿,還能親手揮竿,絕不只有紙上談兵,一定讓努力學習者得其門而入。  歡迎有心想要跨入程式設計領域的初學者加入,更歡迎願意並有熱忱的程式高手加入指導。

Page 4: iOS swift 之 iBeacon 藍芽應用開發學習

個人簡介諸葛魔斌工作室:諸葛魔斌科技創作室學歷:高應大 --- 工管系 ( 非資訊科系 )E-Mail : [email protected]官方網站: http://twcts.comFacebook : https://goo.gl/volM7Z粉絲團 : https://goo.gl/LI08wh 諸葛魔斌科技創作室社群 : https://goo.gl/kjCsz1 高雄資訊程式群學社Line (id) : http://goo.gl/ayGW7dLine@ : http://goo.gl/TxeXkiLine Bot : http://goo.gl/BrdyZlPlay 商店: http://goo.gl/CkVdsdApp Store : http://apple.co/1Qehd64專長: VB(VBA) 、 C# 、 Java(Android) 、 Swift(iOS) 、 PHP 、 Python 、 Conrona 、 Golang 、 Unity 、 MySQL 、 FreeBSD 、 Server 架設、 CAD 、 ……

楊政斌

Page 5: iOS swift 之 iBeacon 藍芽應用開發學習

學習程式的歷程學生時期:打電動,沒有日夜的界限二專畢業:初次接觸 dBase 、 Lotus 使用 Clipper 做經銷存、應收付帳系統

工作階段 1 :接觸 Office ,開始使用 Excel(Lotus)

工作階段 2 :品保工作,自學圖表、函數、 VBA ,做出自動化品管系統興趣展開:自學 VB ,製作 ERP 系統,接觸 Linux 、 FreeBSD ,自學架設 Server

諸葛魔斌誕生

大學時期:半自學 Android App(Java) 、 C# 、 iOS App(Swift)

工作轉變:成立諸葛魔斌科技創作室,接案學習,救國團電腦資訊講師實績:

Page 6: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習維基百科 ---(https://zh.wikipedia.org/wiki/IBeacon)

iBeacon 是蘋果公司提出的「一種可以讓附近手持電子設備檢測到的一種新的低功耗、低成本信號傳送器」的一套可用於室內定位系統的協議。這種技術可以使一個智慧型手機或其他裝置在一個iBeacon 基站的感應範圍內執行相應的命令。這是幫助智慧型手機確定他們大概位置或環境的一個應用程式。在一個 iBeacon 基站的幫助下,智慧型手機的軟體能大概找到它和這個 iBeacon 基站的相對位置。 iBeacon 能讓手機收到附近售賣商品的通知,也可以讓消費者不用拿出錢包或信用卡就能在銷售點的 POS 機上完成支付。 iBeacon 技術通過低功耗藍牙( BLE ),也就是智能藍牙來實現。iBeacon 為利用低功耗藍牙可以近距離感測的功能來傳輸通用唯一識別碼的一個 app 或作業系統。這個識別碼可以在網上被查找到用以確定設備的物理位置或者可以在設備上觸發一個動作比如在社交媒體簽到或者推送通知。各種供應商創造了不同形式的 iBeacon 硬體設備,包括小硬幣電池設備,隨身碟和藍牙 4.0 通用加密狗。

Page 7: iOS swift 之 iBeacon 藍芽應用開發學習

功能一套 iBeacon 的部署由一個或多個在一定範圍內發射傳輸他們唯一的識別碼 iBeacon 信標設備組成。接收設備上的軟體可以查找 iBeacon 並實現多種功能,比如通知用戶,接收設備也可以通過連結 iBeacons 從 iBeacon 的通用屬性配置服務來恢復價值。 iBeacons 不推送通知給接收設備(除了他們自己的 ID ),然而,手機軟體可以使用從 iBeacons 接收到的信號來獲取推送通知。分類分類工作僅應用在前端,但是將返回數組 iBeacons 的所有屬性( UUID 等)。一個 iOS 設備接收一個 iBeacon 的傳輸可以近乎於 iBeacon 的距離, iBeacon 的傳輸距離分為 3個不同的範圍:◎ 最近:幾公分◎ 中距:幾米◎ 遠距:大於 10 米當用戶進入、退出或者在區域內徘徊時, iBeacon 的廣播有能力進行傳播,根據用戶和 Beacon的距離,這三個距離範圍可以相互交互。iBeacon 傳輸的最大射程將取決於位置、現場布置、障礙物 ( 例如在一個皮革手袋或厚情況下 ) 。標準信號有近似的 70 米,遠程信號可達 450 米。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 8: iOS swift 之 iBeacon 藍芽應用開發學習

區域監測區域監測僅限 20 個區域,可以在後台運行,即使 app 在後台運行或者手機鎖屏,依然有不同的應用通知監聽 app (用戶)進入 / 退出該區。區域監測也給了關閉的 app 一個反應的機會,在進入相關區域時允許彈出小窗口。電力消耗低功耗藍牙相比於傳統藍牙在功耗和效率方面有顯著提高,在 16 個不同的 iBeacon廠商的一項研究報告稱,電池的壽命在 1 到 24 個月的範圍之內。蘋果公司,用一枚紐扣電池提供了 1~3 個月的生活,設置了 100ms 的廣告頻率,這樣如果電池提供時間增加到 2~3年就相當於廣告頻率增到到900ms 。在部署 beacon啟用手機 app 時,手機電池的消耗是一個必須要考慮的因素。最新的報告顯示附近有 ibeacon 時,舊的手機會消耗更多的電量,然而新一點的手機在同樣的環境下則更加高效。 除了瀏覽手機消耗的時間,掃描附近的瀏覽量和信標數依然是電池消耗很重要的因素,正如Aislelabs指出的報告一樣。 在後續的報告中, Aislelabs 發現了蘋果 5s ,蘋果 5c 和舊版的蘋果4s 在電池消耗方面的一個大幅的改善。在 10 個 ibeacons 的周圍,蘋果 4s每小時消耗了 11% 的電量而蘋果 5s則每小時比它少消耗 5% 的電量。 一個高效節能的 ibeacon 應用程式需要考慮這些方面去保持應用的響應性和電池消耗之間的平衡。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 9: iOS swift 之 iBeacon 藍芽應用開發學習

最新進展2013年中蘋果公司介紹了 iBeacons ,專家撰寫了文章表示 iBeacons怎樣通過簡化支付提供現場支持來幫助零售業。隨著 IOS7 的推出,零售商和其他中小型企業將能夠使用藍牙 4.0 技術。據報導, 2013年 12月 6日蘋果在其 254 個零售店中使用了 iBeacons 。截至 2014年 5月,花費最低 5美金到 30美金以上就可購買不同的 iBeacons 硬體設備。 每一個不同的設備對自己的默認發射功率和廣告頻率都有不同的默認設置。一些硬體的廣告頻率可以快到每 100毫秒一次而還有一些的可以低至 1赫茲。 iBeacon 技術還在襁褓期,有報導指出一個軟體存在的異樣,最新安卓系統的藍牙堆疊在面對許多 iBeacons 時會崩潰。兼容設備支持藍牙 4.0 的 IOS 設備( iPhone4s及以上, iPad第三代及以上, iPad mini第一代及以上, iPod Touch第五代)。支持 OS X Mavericks 10.9 作業系統和藍牙 4.0 的蘋果計算機。安卓 4.3及以上(如三星 Galaxy S3/S4/S4 Mini, 三星 Galaxy Note 2/3, HTC One, Google/LG Nexus 7 2013 version/Nexus 4/Nexus 5, HTC Butterfly, OnePlus One )支持 Lumia Cyan及以上更新服務 Windows Phone 設備(報告顯示,不包含Windows Phone 8.1 )

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 10: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 11: iOS swift 之 iBeacon 藍芽應用開發學習

應用其實 iBeacon 是 iOS 中延伸定位服務的一種新技術, iBeacon 基地台透過低功耗藍牙技術( Bluetooth Low Energy ,也就是 Bluetooth Smart )建立一個訊號接收區域,只要我們帶著 iOS 裝置走入這個訊號區域後,相對應的 APP 就會發出提醒詢問我們是否要接受訊號,一旦接受 iBeacon 訊號後,他就會偵測我們所在的位置,除了室內定位之外,還可以透過無線感應器和藍牙通知我們附近有什麼樣的產品或是距離櫃台的距離。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 12: iOS swift 之 iBeacon 藍芽應用開發學習

Beacon 技術來源低功耗藍牙技術,他不須要網路連接,而只要有兩個藍牙點就可以運作,而且低功耗藍牙的使用範圍約在 200 公尺內,也就可以直接從點與點了連結形成一個面;而 iPhone 、 iPad 、 iPod touch… 等 iOS 裝置使用的 Beacon 技術就稱為 iBeacon 囉!

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 13: iOS swift 之 iBeacon 藍芽應用開發學習

只是,使用時 iBeacon 時,還是必須透過 APP 才可以接收,也因此我們的手機必須下載相對應的 APP ,才能使用這項功能。而特別的是 iPhone 、 iPad 、 iPod touch 不只可以接受低功耗藍牙的訊號,同時也可以成為發送器,也因此讓全球的 iOS 裝置可以透過 iBeacon 串接起來。但如果你以為 iBeacon 技術只有 Apple iOS 系統使用的話,那可就大錯特錯囉!

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 14: iOS swift 之 iBeacon 藍芽應用開發學習

Google 地圖雖然具有定位功能,但仍以室外定位為主,只能透過衛星或網路定位找到我們在地圖上的位置,而如果轉換到室內空間定位,那只能說聲抱歉囉!也因此, Google 一直想發展室內定位技術,從 Android 4.3 開始, Android 也開始使用 Beacon 技術囉,只是 Android 裝置目前僅能當作接收器使用,並不能當成發送訊息的裝置。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 15: iOS swift 之 iBeacon 藍芽應用開發學習

除了 iOS 和 Android 兩大系統都開始推廣 Beacon 技術的優勢之外,它還有個絕對優勢就是「省電」,之前的定位服務大多是以 GPS全球定位系統,它必須要透過衛星才能定位,而且戶外的定位是最清晰精準的,但只要打開有 GPS 的 APP ,我們就會發現手機電力快速下降。至於 Beacon ,它使用的是低功耗藍牙,所以並耗電量低,在室外也許沒有什麼用途,但只要有接收器就可以快速定位,並大幅度提升室內定位的精準度。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 16: iOS swift 之 iBeacon 藍芽應用開發學習

想將 iBeacon 技術應用在生活中,並不是只要開啟藍牙就可以使用,而須要搭配 APP ,只要在室內放置 iBeacon 發送器,並開啟我們 iPhone 、 iPad… 等裝置的藍牙,透過相對應的 APP ,我們就可以接收到訊號進而收到訊息。只是,截至目前為止,每一款發送器的外型、續航力…等都不一樣,甚至連相對應的 APP 都不一樣,也為這個新市場投下了新商機。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 17: iOS swift 之 iBeacon 藍芽應用開發學習

有了 iBeacon ,以後當我們走進一家有使用 iBeacon 的商店,只要手機接收到藍牙訊號, APP 就會自動推播通知我們店裡有什麼特價品、有哪些是我們購物清單上要購買的東西。未來博物館也可以陳設發送器,這麼一來就可以透過 iBeacon 為民眾進行導覽。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 18: iOS swift 之 iBeacon 藍芽應用開發學習

此外,知名的線上交易支付平台 PayPal  也將把 iBeacon 應用在實際生活中了!只要商店、景點或展覽有設置 iBeacon 發送器,我們就可以透過它支付小費、門票囉!從這些應用看來,我們會發現 iBeacon 在生活中的應用可以說是相當廣泛,而且是很實際的應用,也將為生活帶來更多的便利,也難怪眾多科技網站都認為 iBeacon 未來很可能會取代 NFC 功能,並將帶來生活的另一番變革了!

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 19: iOS swift 之 iBeacon 藍芽應用開發學習

說明最廣義而且最簡單的 Bluetooth Beacon 在實作上並不困難。只要使用一顆合乎 Bluetooth Smart (以前叫做 BLE )規格的晶片,然後撰寫 firmware 讓它可以在某個 Bluetooth Service 中,「定期」發送一段「特定格式」廣播訊息。此時,手機端的 App 則透過 Bluetooth Lib ,在前景或背景模式中,去掃描該 Bluetooth Service 中所有的廣播訊息,然後將這些廣播訊息的內容送到特定的網路服務中去比對,然後再根據比對的結果進行對應的工作。這就是一種 Beacon 應用。然而在這種看似單的流程中,有三個主要變數會影響使用者對 Beacon 應用的使用體驗:一個是訊息廣播的格式與內容,二是訊息廣播的間隔密度,三是廣播的訊號強度。舉例來說, Apple 的 iBeacon 主要目的之一,是結合提供區域商店的精準推撥廣告服務,或是進行精準的室內定位。在這個情境下, App 多數會在背景來執行對 iBeacon 廣播訊息的掃描。此時,廣播訊息之間的間隔密度就不宜太長,才不會影響 App 在背景偵測 iBeacon 的反應性。這也就是為什麼 iBeacon 的規範中,對廣播訊息的間隔要求不得超過 0.15 秒。當然,廣播訊息間隔越短,耗電量就越多。此時,對 Beacon 供電方式的設計,以及 Beacon 的體積,就會形成另外一種限制。這也就是為什麼 iBeacon 的硬體,在加入足夠的電池之後,都無法做得太小的主要原因。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 20: iOS swift 之 iBeacon 藍芽應用開發學習

其次, Beacon 所廣播的 ID 要如何具備唯一性,或者足夠的防仿冒性,則與 Beacon 的用途有關。如果 Beacon 只是用來讓讓商家提供互動廣告與微定位服務,那防仿冒性的要求自然不高。但如果 Beacon 打算用來作為一種身分識別,那安全性就是另一種議題。最後,廣播訊息的強度,則與 Beacon 的應用領域有關係。類似 iBeacon 這樣的商家微定位服務,並不需要將訊號打太遠。但是,對於失物協尋或者社會安全的的服務,距離則是一個重要的關鍵。mBeacon 就是在綜合上述考量下的產物。因此,它提供了可程式化的廣播內容與廣播間隔,防偽機制,以及多元化的電力與機構選項。它是全世界第一個多用途的 Beacon 平台。它希望提供跨作業系統的支援,並且在單一框架中提供多元化的應用,成為虛擬與實體世界之間的關鍵連結。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 21: iOS swift 之 iBeacon 藍芽應用開發學習

目前市場上,有兩大類產品,都是以 Bluetooth Smart 技術為基礎,所以經常被搞混。( Bluetooth Smart 先前更廣為人知的名稱是 BLE ,是 Bluetooth Low Energy 的縮寫)。第一大類是所謂的 KeyFinder 或 Keytag ,中國大陸習慣叫藍牙防丟器,像 Tile 以及 Stick&Find 、 Trackr Bravo 、 BeLuvv (Guardian & Puppy) 、 Nut⋯⋯都是這類,市場上起碼有 20 個品牌。第二大類才是所謂的 Beacon ,包括 Apple 的 iBeacon , Qualcomm 的 Gimball ,與 mBeacon 都是。第一類的產品並不算是 Beacon ,而是一種基於 FindMe 這個標準 Bluetooth Profile 的產品。透過實施 FindMe 這個標準的藍牙服務,可以讓裝置與主人的手機的 App 端之間建立經常性連線,即使 App 在背景運作,這個連線依然存在。因為連線是經常性存在,因此手機可以發送訊號隨時找尋裝置,裝置也可以隨時發送訊號尋找手機。如果訊號過低即將斷線,手機端的 App 還會收到通知,所以 App 可以即時發出聲響或訊息通知主人,或者自動記錄斷線的座標。然而,也因為是經常性連線,所以只要裝置在主人手機的連線範圍內時(通常是 30 到 50 公尺),裝置是不會進入廣播的模式,當然也就不會被範圍內被其他人的藍牙手機發現。只有當主人的手機不在連線範圍內時,裝置才會進入廣播的模式,但是廣播的內容通常只是裝置的名稱,而不是一種編碼。最後,如果主人的手機斷線一段時間,例如 48 小時,裝置就會自動關閉。根據上述的特點,簡單的說,這類產品基本上是設計來服務「裝置的主人」,而不是來服務「非特定的其他人」。

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 22: iOS swift 之 iBeacon 藍芽應用開發學習

第二大類,則是 Beacon 類的產品,包括 mBeacon 以及 Apple iBeacon 在內都是。在設計理念上, Beacon 和前述剛好相反,是設計來服務它人而不是主人。 Beacon 除了在少數的情況下,多數的時候是不會和主人的手機之間建立經常性的連線。相反地,它們會持續以某種時間間隔來廣播某種編碼,以及某些可參數化的屬性。到目前為止, mBeacon 寵物吊牌與鑰匙圈,是全世界唯一建立在 Beacon 概念上的「協尋器」產品。這樣做,當然會使 mBeacon 寵物吊牌或鑰匙圈不具備前述 Key Finder 類產品的雙向呼叫與即時斷線警告功能,而只能提供從手機 App 呼叫裝置的功能。但也因此獲得更遠的協尋距離,以及更靈敏的協尋反應。同時,也賦與寵物吊牌與鑰匙圈更多元化的功能。當手機 App 結合 mBeacon 以及雲端服務之後,各種虛實整合的創新應用將成為移動互連網的下一波主流應用:尋找走失的小朋友,老人,或者寵物近場遊戲與近場交友商場導覽與近場行動廣告智慧型會員卡與行動支付門禁與身分安全識別大型場所的進出與人群流量管理車輛(汽車、機車、自行車)管理與識別社會安全與照護登山迷途救援

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 23: iOS swift 之 iBeacon 藍芽應用開發學習

實作:1. 藍芽設置 (Peripheral)

2. 連結藍芽 (Central)

3. iBeacon

4. 手機模擬 iBeacon

iOS Swift 之 iBeacon 藍芽應用開發學習

Page 24: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習藍芽設置 (Peripheral)

1. 新建 Single View Application 專案2. 編輯 ViewController.swift 設定 import CoreBluetooth 判斷藍芽是否開啟,如果不是藍牙 4.x ,也會傳回電源未開啟 取得行動裝置取個藍芽名字 收到 central 端的訂閱 / 取消指令

Page 25: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習連結藍芽 (Central)

1. 新建 Single View Application 專案2. 設置 Main.storyboard ,放置 Button 至佈局中3. 編輯 ViewController.swift 設定 import CoreBluetooth 判斷藍芽是否開啟,如果不是藍牙 4.x ,也會傳回電源未開啟 找到藍芽裝置 訂閱按鈕處理 取消訂閱按鈕處理 讀資料按鈕處理 寫資料按鈕處理 斷線按鈕處理 重新連線按鈕處理

Page 26: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習連結藍芽 (Central)

設置 Main.storyboard ,放置 Button 至佈局中

Page 27: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習iBeacon

1. 新建 Single View Application 專案2. 設定 Info.plist ,設置 LocationManager 權限3. 編輯 ViewController.swift 設定 import CoreBluetooth & import CoreLocation 判斷藍芽是否開啟,如果不是藍牙 4.x ,也會傳回電源未開啟 找到藍芽裝置 訂閱按鈕處理 取消訂閱按鈕處理 讀資料按鈕處理 寫資料按鈕處理 斷線按鈕處理 重新連線按鈕處理

Page 28: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習iBeacon

設定 Info.plist ,設置 LocationManager 權限 (Location Always Usage Description 這個 App 將透過 Beacon 定位 )

Page 29: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習手機模擬 iBeacon

1. 新建 Single View Application 專案2. 設定 Info.plist ,設置 LocationManager 權限3. 編輯 ViewController.swift 設定 import CoreBluetooth & import CoreLocation 當某裝置進行掃描周圍藍牙裝置時 開始廣播訊號

Page 30: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習結論後續可以開發 (1) 商 /展場應用,園區管理 (2) 短距離 / 室內定位 (3) 未來 BLE 5.0 長距離物聯網控制

Page 31: iOS swift 之 iBeacon 藍芽應用開發學習

iOS Swift 之 iBeacon 藍芽應用開發學習