- 創(chuàng)建iBeacon對(duì)象
CLBeaconRegion* beaconRegion = [[CLBeaconRegion alloc]initWithProximityUUID:[[NSUUID alloc]initWithUUIDString:@"FDA50693-A4E2-4FB1-AFCF-C6EB07647825"]//只指定這個(gè)參數(shù)則匹配所有相同UUID的Beacon
major:10021
minor:8775
identifier:@"怪蜀黍的ibeacon"];//這個(gè)屬性標(biāo)識(shí)注冊(cè)在系統(tǒng)內(nèi)的Beacon Region
- 指定是否在邊界穿越事件中通知給App
//如果在用戶(hù)離開(kāi)區(qū)域時(shí)不需要通知App蹲诀,則可以設(shè)置區(qū)域的notifyOnEntry屬性為NO帮非。
beaconRegion.notifyOnExit = YES;
beaconRegion.notifyOnEntry = YES;
如果在邊界穿越情況發(fā)生時(shí)怔檩,app沒(méi)有在后臺(tái)啟動(dòng)刮便,系統(tǒng)會(huì)在后臺(tái)啟動(dòng)app空猜,使app處理這個(gè)情況。在啟動(dòng)時(shí)恨旱,你的app必須配置新的位置管理器location manager 辈毯,設(shè)置委托對(duì)象之后,這些事件通知會(huì)發(fā)送給locationManager:didExitRegion:和***locationManager:didEnterRegion: ***這兩個(gè)方法搜贤。
- notifyEntryStateOnDisplay此屬性含義,默認(rèn)值是NO
beaconRegion.notifyEntryStateOnDisplay = YES;
當(dāng)設(shè)置為YES時(shí)漓摩,位置管理器在用戶(hù)打開(kāi)屏幕且設(shè)備已經(jīng)在Beacon Region范圍內(nèi)時(shí)發(fā)送通知。 即使你的應(yīng)用沒(méi)有 運(yùn)行入客,這些通知也會(huì)傳送。 在這種情況下腿椎,系統(tǒng)會(huì)在后臺(tái)啟動(dòng)您的應(yīng)用桌硫,以便它可以處理通知。在這兩種情況下啃炸,如果位置管理器有委托對(duì)象delegate铆隘,位置管理器會(huì)調(diào)用這個(gè)方法*** locationManager:didDetermineState:forRegion:***
- iBeacon兩種模式
//監(jiān)測(cè)模式
[self.locationManager startMonitoringForRegion:beaconRegion];
Region事件會(huì)被分發(fā)給locationManager:didEnterRegion:和locationManager:didExitRegion:這兩個(gè)代理方法。
如果失敗則調(diào)用委托人的***locationManager:monitoringDidFailForRegion:withError: ***協(xié)議方法
一個(gè)app最多注冊(cè)20個(gè)Region南用。
//檢測(cè)是否在范圍模式
[self.locationManager startRangingBeaconsInRegion:beaconRegion];
一旦注冊(cè)膀钠,位置管理器會(huì)調(diào)用***locationManager:didRangeBeacons:inRegion: , 報(bào)告任何碰到的beacons給它的委托對(duì)象掏湾。
調(diào)用locationManager:rangingBeaconsDidFailForRegion:withError: ***來(lái)提供合適的錯(cuò)誤信息。
如何在后臺(tái)監(jiān)測(cè)ibeacon對(duì)象呢肿嘲?
notifyEntryStateOnDisplay屬性設(shè)置為YES,同時(shí)把位置管理器的委托設(shè)置為AppDelegate,實(shí)現(xiàn)*** locationManager:didDetermineState:forRegion:這個(gè)方法融击,根據(jù)CLRegionState,區(qū)分不同的狀態(tài),來(lái)做對(duì)應(yīng)的通知雳窟。
實(shí)現(xiàn)locationManager:didEnterRegion:*** 和locationManager:didExitRegion:這兩個(gè)協(xié)議方法尊浪,來(lái)實(shí)現(xiàn)用戶(hù)離開(kāi)beacon范圍的監(jiān)測(cè)。