- 創建iBeacon對象
CLBeaconRegion* beaconRegion = [[CLBeaconRegion alloc]initWithProximityUUID:[[NSUUID alloc]initWithUUIDString:@"FDA50693-A4E2-4FB1-AFCF-C6EB07647825"]//只指定這個參數則匹配所有相同UUID的Beacon
major:10021
minor:8775
identifier:@"怪蜀黍的ibeacon"];//這個屬性標識注冊在系統內的Beacon Region
- 指定是否在邊界穿越事件中通知給App
//如果在用戶離開區域時不需要通知App,則可以設置區域的notifyOnEntry屬性為NO。
beaconRegion.notifyOnExit = YES;
beaconRegion.notifyOnEntry = YES;
如果在邊界穿越情況發生時,app沒有在后臺啟動,系統會在后臺啟動app,使app處理這個情況。在啟動時,你的app必須配置新的位置管理器location manager ,設置委托對象之后,這些事件通知會發送給locationManager:didExitRegion:和***locationManager:didEnterRegion: ***這兩個方法。
- notifyEntryStateOnDisplay此屬性含義,默認值是NO
beaconRegion.notifyEntryStateOnDisplay = YES;
當設置為YES時,位置管理器在用戶打開屏幕且設備已經在Beacon Region范圍內時發送通知。 即使你的應用沒有 運行,這些通知也會傳送。 在這種情況下,系統會在后臺啟動您的應用,以便它可以處理通知。在這兩種情況下,如果位置管理器有委托對象delegate,位置管理器會調用這個方法*** locationManager:didDetermineState:forRegion:***
- iBeacon兩種模式
//監測模式
[self.locationManager startMonitoringForRegion:beaconRegion];
Region事件會被分發給locationManager:didEnterRegion:和locationManager:didExitRegion:這兩個代理方法。
如果失敗則調用委托人的***locationManager:monitoringDidFailForRegion:withError: ***協議方法
一個app最多注冊20個Region。
//檢測是否在范圍模式
[self.locationManager startRangingBeaconsInRegion:beaconRegion];
一旦注冊,位置管理器會調用***locationManager:didRangeBeacons:inRegion: , 報告任何碰到的beacons給它的委托對象。
調用locationManager:rangingBeaconsDidFailForRegion:withError: ***來提供合適的錯誤信息。
如何在后臺監測ibeacon對象呢?
notifyEntryStateOnDisplay屬性設置為YES,同時把位置管理器的委托設置為AppDelegate,實現*** locationManager:didDetermineState:forRegion:這個方法,根據CLRegionState,區分不同的狀態,來做對應的通知。
實現locationManager:didEnterRegion:*** 和locationManager:didExitRegion:這兩個協議方法,來實現用戶離開beacon范圍的監測。