IOS Beacon SDK Import

出自TAMedia
於 2017年7月11日 (二) 07:47 由 imported>Wikiuser 所做的修訂 (新頁面: ==SDK程式碼導入== 1.在AppDelegate.m中,import BeaconNotification.h以及BeaconController.h兩個herder: #import "BeaconNotification.h" #import "BeaconController.h" ...)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

SDK程式碼導入

1.在AppDelegate.m中,import BeaconNotification.h以及BeaconController.h兩個herder:

   #import "BeaconNotification.h"
   #import "BeaconController.h"
    //BeaconNotification負責所有的本地推播通知的功能,因此需要導入,並搭配BeaconController進行控制。

2.在AppDelegate.m中,另外寫入以下的程式碼:

   //註冊LocationNotification的動作:(此方法在iOS 8及iOS 9皆可運作)
   - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler{
   [[BeaconNotification notificationManager] handleActionWithIdentifier:identifier forLocalNotification:notification];    
       //此行一定要呼叫
       completionHandler();
   }
   //當App在前景時,發送LocalNotification的方法:
   - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{    
   [[BeaconNotification notificationManager] didReceiveBSDKNotification:notification openBtnString:[BeaconController defaultController].openBtnString closeBtnString:[BeaconController defaultController].closeBtnString delayTime:[BeaconController defaultController].closeDelayTime];
   
   }

完成圖:

Beacon import code 1.png

3. 在App顯示首頁的ViewController.h中,import BeaconController.h
BeaconController負責控制主要兩件任務,分別是偵測周圍的iBeacon, 以及控制與Server端的連線,上述2部分SDK皆會自行完成。

   #import "BeaconController.h"

4.將該ViewController採納BeaconControllerDelegate的protocol

   @interface ViewController : UIViewController <BeaconControllerDelegate>

透過採納BeaconControllerDelegate的protocol,將可以取得Callback的相關資訊。

完成圖:

Beacon import code 2.png

5.在ViewController.m中,在interface區塊建立BeaconController的實體

   @property (strong, nonatomic) BeaconController *controller;

6. 在ViewController.m的viewDidLoad中,寫入下方2行的程式碼(請注意在initWithSlotCode後方輸入您的Slot ID):

   self.controller = [[BeaconController defaultController] initWithSlotCode:@"輸入您的Slot ID"];

將BeaconController的實體self.controlller透過[BeaconController defaulController]方法建立,defaultController方法將會建立一個Singleton的BeaconController的實體。 之後在後面加入iniitWithSlotCode,並輸入您從TAMidea取得的Slot ID,讓SDK將此參數帶入以向Server請求取得廣告欄位。

   self.controller.delegate = self;

將self.controller.delegate的代理人設定為自己。

完成圖:

Beacon import code 3.png

7.BeaconControllerDelegate提供數個Delegation callback方法如下: 方法名稱 說明

   - (void)BSDKdidCompleteUpdateBeaconSDK;	通知與Server連線完成並取得廣告資料
   - (void)BSDKdidFailUpdateBeaconSDK:(NSError *)error;	通知與Server連線失敗
   - (void)BSDKdidEnterBeaconRegion:(CLRegion *)region;	通知進入iBeacon區域
   - (void)BSDKdidExitBeaconRegion:(CLRegion *)region;	通知離開iBeacon區域
   - (void)BSDKdidRangeBeaconInfo:(CLBeacon*)beacon;	通知取得iBeacon裝置細部資訊
   -(void)BSDKdidReceivedPowerVoltage:(float)voltage fromBeacon:(NSString *)mac;	通知取得iBeacon裝置電量資訊
   - (void)BSDKdidReopenAdRequest;	通知廣告等待間隔期間到期,可請求廣告

8.錯誤訊息Error Message Log
表示與Server連線後,取得Server上資料失敗(可能原因:網路連線不穩定) Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."

9. Bitcode相關
本SDK使用最新Xcode 7建立,因此有包含Xcode 7所提供的Bitcode機制,如打包專案時出現Bitcode相關錯誤,請至Build Setting中,搜尋Bitcode並把Enable Bitcode關閉(使用Xcode 7之專案)。

10. 請求廣告限制
當廣告請求成功後,下次啟動請求廣告需滿足以下條件: 需等待請求廣告時間之間隔到期後,才能再次請求廣告(等待時間由Server端回傳時間值,再由SDK進行判斷)。

11. iPhone環境在iOS8以下的情況
SDK會偵測iOS版本,如果iPhone裝置環境在iOS8以下則SDK不會進行任何運作

Beacon import code 4.png