基本概念

BEHtmlViewController 為一個 iOS Cocoa Touch UIViewController,可以依照App UI的配置需求,加入其他 ViewController 中作為 subview。該元件在起始後,會自動進行周圍 iBeacon 的偵測動作。如果發現進入任何一個 SPOT Beacon 的訊號範圍內,會呼叫 didBeaconRegion 。如果該 SPOT Beacon 有連結 App 對應的內容,則會呼叫 didRangeBeaconContentWithEid 。可以在 didRangeBeaconContentWithEid 當中,通知使用者,或自動切換 view 至 BEHtmlViewController。

將 BEHtmlViewController 函式庫加入 xcode 的 專案中

將以下檔案加入專案中:
- spotbroswer.framework 
- 函式庫libz.dylib
- html5inc 資料夾 (選擇 Create folder references)

將以下兩個參數,加入InfoPlist.strings檔案:

"NSLocationUsageDescription" = "偵測周圍的iBeacon ";
"NSLocationAlwaysUsageDescription" = "偵測周圍的iBeacon ";

將 Build Settings > Linking > Other Linker Flags 加入下列參數:

-ObjC
-lstdc++

 

如果所連結的HTML5互動應用,有非https 通訊協議,iOS 8開始,需要在該App的info.plist加入以下設定:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict> 

建立物件並進行參數設定

BEHtmlViewController *beVc = [[BEHtmlViewController alloc] init];
beVc .APIKey = @"oooooooo"; //設定 API Key (務必要提供正確的apikey)
beVc.sharedUUID = YES;      //如果有使用 private major Id,請設為NO
beVc.customMajorId=0;       //如果有使用 private major Id,請設定該值
beVc.notificationText= @"";//偵測到beacon的推播文字 (private major Id)
beVc.customEndpoint = @""; //指定自行架設的後台伺服器位置
beVc. minPushIntervalSec = 60; //兩次推播文字的最小間隔時間(秒),至少為60

[beVc loadView] //視需要呼叫 loadview,以開始 beacon 偵測

Delegation

(void) didRangBeaconNearBy:(NSArray*) beaconArray

當偵測周圍的SPOT Beacon 時被呼叫,傳回周圍的beacon 資訊

 

(void) didChangedBeaconDetectionStatus: (int) status

當 Beacon 偵測功能有異常時,會回傳狀態代碼

 

(void) didRangeBeaconContentWithEid:(NSString *) eid

當偵測到符合自動推播的SPOT Beacon 互動內容時被呼叫,同時傳入該 campaign 的 id

 

(void) callbackOrigin

使用者點擊BEHtmlViewController左上角的返回按鈕

 

(void) didBeaconRegion:(int) type

進入任一SPOT Beacon 範圍內時被呼叫,固定傳入值為 0

 

可呼叫的API

 (void) setBeaconDetectionEnable : (bool) enable

啟動與關閉beacon 偵測。
傳入值:YES – 啟動, NO – 關閉


 (NSArray*) getNearByBeaconArray

取得最後一次周圍Beacon 的偵測資料
回傳 NSArray,內容說明請參考Beacon Array 欄位說明

(int) getBeaconDetectionStatus

取得目前 Beacon 偵測功能的狀態,回傳狀態代碼相同於didChangedBeaconDetectionStatus。


(void) setCustomUserId:(NSString *)uid

將App的使用者ID傳送給iBeacon HTML5 網頁應用
uid:使用者ID,可於 HTML5 網頁中,透過 spot-jsbelib 函式庫接收

 

自訂起始頁面設定

尚未進入SPOT beacon 的範圍前,BEHtmlViewController 所顯示的內容。
設定在: html5inc/welcome_screen.js 當中。
json 格式說明:imageLink: 圖檔的陣列。

 

Beacon Array 欄位說明

NSDictionary 物件。在非Smart City Edition,僅idname,px,description三個欄位有資料。

key

Type

名稱

說明

idname

NSString

Beacon識別編號

 

px

int

距離

1: < 50cm

2: 50cm ~ 2m

3: 2m ~ 30m

0: unknown

description

NSString

描述

店名, 地標名

loctype

NSString

地點類型

 

lat

double

座標緯度

 

lng

double

座標經度

 

floor

int

樓層

室外一律為0

 

Beacon偵測工作狀態代碼

Const

Int

說明

BEACON_DETECTION_OK

0

運作正常

BEACON_DETECTION_ERROR_NO_BLE

1

未支援BLE

BEACON_DETECTION_ERROR_BLE_OFF

2

藍芽選項關閉

BEACON_DETECTION_ERROR_NO_NETWORK

3

無法連結Cloud伺服器

BEACON_DETECTION_ERROR_LOCATION_SERVICE_OFF

4

使用者關閉/未授權定位服務(僅限iOS)

 

 

範例程式說明

範例:ss1.xcodeproj
使用 modal transition style 方式,將 BEHtmlViewController 與主要UI 的 .xib,以翻面的方式連結 (UIModalTransitionStyleFlipHorizontal)

範例:NB2. Xcodeproj
使用 Tab View方式分頁切換 BEHtmlViewController 。

Attachments:
Download this file (SPOT SDK iOSv2_ zh_tw.pdf)SPOT SDK iOSv2_ zh_tw.pdf[ ]1100 kB

Official iBeacon Licensee

© 2014 KKlabs Inc., All rights reserved

Add 1F., No. 16-1, Ln. 106, Songjiang Rd.,
Taipei City 10459, Taiwan
Email service@kkbooks.tw
Tel +886 2 2563 2260