CLLocationManagerDelegate協(xié)議詳解
????代理方法:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
? ? 此方法iOS6.0以后被棄用转捕,第一次定位的時(shí)候可以拿到相關(guān)的位置信息作岖,如果用戶不停止定位功能,每隔一段時(shí)間返回一條數(shù)據(jù)五芝,newLocation最新獲取到的定位信息痘儡,oldLocation上次定位的位置信息
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
? ? 此方法iOS6.0以后新增方法,當(dāng)位置更新或者拿到位置信息的時(shí)候都會(huì)調(diào)用這個(gè)方法枢步;manager生成更新事件的位置管理器對(duì)象沉删,locations 這個(gè)代表更新的locaiton對(duì)象數(shù)據(jù),為什么是數(shù)組吶醉途,因?yàn)槎ㄎ坏臅r(shí)候有可能延遲調(diào)用該方法或者拿到了多個(gè)位置的對(duì)象矾瑰,但是這個(gè)數(shù)組中的對(duì)象的排列順序是有序的,最后一個(gè)對(duì)象是最新的對(duì)象隘擎。
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
? ? 此方法iOS3.0以上新增殴穴,manager生成更新事件的位置管理器對(duì)象,newHeading設(shè)備的真實(shí)方向嵌屎,當(dāng)獲取新的設(shè)備方向的時(shí)候調(diào)用
- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager
? ? 此方法告訴用戶設(shè)備周邊的磁場(chǎng)改變時(shí)或者有干擾設(shè)備干擾磁場(chǎng),或者設(shè)備的角度變化時(shí)通過(guò)該方法來(lái)通知委托者恍涂。iOS3.0以后添加宝惰。
? ? 此方法iOS7.0以上新增,每當(dāng)設(shè)備超過(guò)某個(gè)區(qū)域的邊界時(shí)都會(huì)調(diào)用該方法再沧。判斷一下設(shè)備是在這個(gè)區(qū)域的外面還是里面尼夺,也就是state(CLRegionState)狀態(tài)。
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
? ? 當(dāng)定位發(fā)生錯(cuò)誤時(shí)調(diào)用該方法
? ??此方法iOS4.2以上新增炒瘸,當(dāng)app的定位權(quán)限修改以后調(diào)用該方法淤堵。
- (void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager
? ? 此方法iOS6.0以上新增,當(dāng)設(shè)備位置沒(méi)有變化時(shí)顷扩,iOS會(huì)暫停定位的交付工作拐邪,并用此方法告知開(kāi)發(fā)者。
- (void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager
? ??此方法iOS6.0以上新增隘截,當(dāng)iOS自動(dòng)恢復(fù)位置更新交付時(shí)扎阶,調(diào)用該方法
????此方法iOS6.0以上新增汹胃,延遲更新交付定位位置時(shí),調(diào)用
- (void)locationManager:(CLLocationManager *)manager didVisit:(CLVisit *)visit
????此方法iOS8.0以上新增东臀,必須調(diào)用:startMonitoringVisits?使用位置定位來(lái)判斷用戶是不是在某個(gè)期望的地理位置着饥,如果在調(diào)用該方法。
區(qū)域監(jiān)視及ibeacons基站
? ? 此方法iOS7.0以上新增惰赋,當(dāng)進(jìn)入iBeacon基站宰掉,基站位置變化時(shí),會(huì)調(diào)用該方法赁濒。
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
????此方法iOS4.0以上新增轨奄,當(dāng)設(shè)備進(jìn)入一個(gè)iBeacon區(qū)域時(shí),會(huì)調(diào)用該方法流部,速度很快
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
? ??此方法iOS4.0以上新增戚绕,當(dāng)設(shè)備離開(kāi)一個(gè)iBeacon區(qū)域時(shí),會(huì)調(diào)用該方法枝冀,此方法有30秒的延遲
????此方法iOS7.0以上新增舞丛,?startRangingBeaconsInRegion ?當(dāng)一個(gè)區(qū)域的信號(hào)發(fā)生錯(cuò)誤或Ranging模式檢測(cè)附近的Beacons基站失敗,調(diào)用該方法
????此方法iOS4.0以上新增果漾,?startMonitoringForRegion ?當(dāng)一個(gè)區(qū)域的信號(hào)發(fā)生錯(cuò)誤或Monitoring模式檢測(cè)附近的Beacons基站失敗球切,調(diào)用該方法
- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
? ? 此方法iOS5.0以上新增,當(dāng)一個(gè)新區(qū)域的檢測(cè)成功啟用時(shí)調(diào)用绒障。
參考:
? ??Apple官方文檔
????CLLocationManager didVisit not working
? ??Apple iBeacons