「IOS Beacon SDK Import」修訂間的差異
imported>Wikiuser (新頁面: ==SDK程式碼導入== 1.在AppDelegate.m中,import BeaconNotification.h以及BeaconController.h兩個herder: #import "BeaconNotification.h" #import "BeaconController.h" ...) |
imported>Wikiuser |
||
行 56: | 行 56: | ||
SDK會偵測iOS版本,如果iPhone裝置環境在iOS8以下則SDK不會進行任何運作 | SDK會偵測iOS版本,如果iPhone裝置環境在iOS8以下則SDK不會進行任何運作 | ||
[[檔案:Beacon_import_code_4.png|none|800px]] | [[檔案:Beacon_import_code_4.png|none|800px]] | ||
[[IOS_Beacon_Ad_SDK_Tutorial|回iOS Beacon SDK教學]] |
於 2017年7月11日 (二) 07:48 的最新修訂
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]; }
完成圖:
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的相關資訊。
完成圖:
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的代理人設定為自己。
完成圖:
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不會進行任何運作