iPhone6/Plus開啟或關(guān)閉定位方法

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、沁源ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的沁源網(wǎng)站制作公司
第一步:從iPhone6主屏中,找到并進(jìn)入“設(shè)置”,然后在里面再找到“隱私”設(shè)置,并點擊進(jìn)入,如下圖所示:
第二步:進(jìn)入iOS8隱私設(shè)置后,在最頂部就可以看到“定位服務(wù)”了,這里有一個定位服務(wù)開關(guān),如果需要開啟iPhone6定位服務(wù),那么將其打開即可,如下圖所示。
通過以上這個定位服務(wù)開關(guān),我們可以方便的開啟或者關(guān)閉iPhone6/Plus定位功能了。
另外,如果您希望某些應(yīng)用開啟定位,某些應(yīng)用不開啟定位功能,該如何操作呢?接下來就是iOS8隱私定位的高級設(shè)置了。
第三步:當(dāng)開啟iOS8定位服務(wù)后,下面會列出所有需要獲取定位的應(yīng)用,我們只需要將一些不希望開啟定位的應(yīng)用,選擇關(guān)閉即可。比如筆者要關(guān)閉愛奇藝應(yīng)用的定位服務(wù),只要點擊應(yīng)用名稱,進(jìn)入設(shè)置,然后選擇“永不”允許訪問位置信息,如下圖所示。
這樣,就可以單獨關(guān)閉愛奇藝定位功能,其他應(yīng)用不受影響。當(dāng)然,大家可以根據(jù)自己的需求,靈活設(shè)置哪些應(yīng)用開啟定位。
@property (strong, nonatomic) CLLocationManager *mgr;//定位
-(NSDictionary *)getIPAddresses
{
NSMutableDictionary *addresses = [NSMutableDictionary dictionaryWithCapacity:8];
// retrieve the current interfaces - returns 0 on success
struct ifaddrs *interfaces;
if(!getifaddrs(interfaces)) {
// Loop through linked list of interfaces
struct ifaddrs *interface;
for(interface=interfaces; interface; interface=interface-ifa_next) {
if(!(interface-ifa_flags IFF_UP) /* || (interface-ifa_flags IFF_LOOPBACK) */ ) {
continue; // deeply nested code harder to read
}
const struct sockaddr_in *addr = (const struct sockaddr_in*)interface-ifa_addr;
char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ];
if(addr (addr-sin_family==AF_INET || addr-sin_family==AF_INET6)) {
NSString *name = [NSString stringWithUTF8String:interface-ifa_name];
NSString *type;
if(addr-sin_family == AF_INET) {
if(inet_ntop(AF_INET, addr-sin_addr, addrBuf, INET_ADDRSTRLEN)) {
type = IP_ADDR_IPv4;
}
} else {
const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6*)interface-ifa_addr;
if(inet_ntop(AF_INET6, addr6-sin6_addr, addrBuf, INET6_ADDRSTRLEN)) {
type = IP_ADDR_IPv6;
}
}
if(type) {
NSString *key = [NSString stringWithFormat:@"%@/%@", name, type];
addresses[key] = [NSString stringWithUTF8String:addrBuf];
}
}
}
// Free memory
freeifaddrs(interfaces);
}
return [addresses count] ? addresses : nil;
}
-(void)locationCityName
{
// 1.獲取用戶的授權(quán)狀態(tài)(iOS7只要使用到定位,就會直接請求授權(quán))
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];
if (status == kCLAuthorizationStatusNotDetermined) {
/*
if ([[UIDevice currentDevice].systemVersion doubleValue] = 8.0) {
[mgr requestAlwaysAuthorization];
}
*/
if ([self.mgr respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[self.mgr requestAlwaysAuthorization];
}
}
// 2.開始定位(當(dāng)調(diào)用該方法,系統(tǒng)就會不停的更新用戶的位置)
[self.mgr startUpdatingLocation];
}
//CLLocationManagerDelegate的代理方法
#pragma mark - 懶加載
- (CLLocationManager *)mgr
{
if (_mgr == nil)
{
self.mgr = [[CLLocationManager alloc] init];
// 設(shè)置代理,在代理方法中可以拿到用戶的位置
self.mgr.delegate = self;
// 設(shè)置定位的精度(精度越高越耗電)
self.mgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
// 設(shè)置當(dāng)用戶移動的時候,重新來定位
self.mgr.distanceFilter = 10.0;
}
return _mgr;
}
//更新位置
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
//此處locations存儲了持續(xù)更新的位置坐標(biāo)值,取最后一個值為最新位置,如果不想讓其持續(xù)更新位置,則在此方法中獲取到一個值之后讓locationManager stopUpdatingLocation
CLLocation *currentLocation = [locations lastObject];
// 獲取當(dāng)前所在的城市名
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
//根據(jù)經(jīng)緯度反向地理編譯出地址信息
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *array, NSError *error)
{
if (array.count 0)
{
CLPlacemark *placemark = [array objectAtIndex:0];
//將獲得的所有信息顯示到label上
NSLog(@"%@",placemark.name);
//獲取城市
NSString *city = placemark.locality;
if (!city)
{
//四大直轄市的城市信息無法通過locality獲得,只能通過獲取省份的方法來獲得(如果city為空,則可知為直轄市)
city = placemark.administrativeArea;
}
NSLog(@"----city---- %@ ",city);
// NSLog(@"-----------%@-",placemark)
[UserDefaultsData setAddressesCity:city];
}else
{
}
}];
//系統(tǒng)會一直更新數(shù)據(jù),直到選擇停止更新,因為我們只需要獲得一次經(jīng)緯度即可,所以獲取之后就停止更新
[manager stopUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
if (error.code == kCLErrorDenied)
{
// 提示用戶出錯原因,可按住Option鍵點擊 KCLErrorDenied的查看更多出錯信息,可打印error.code值查找原因所在
}
}
鯉躍虛擬定位王APP
用鯉躍虛擬定位王APP,可以幫助用戶變更手機(jī)定位位置信息。
ios虛擬定位需要使用第三方軟件,電腦需要安裝iTunes工具,使用蘋果數(shù)據(jù)線連接電腦,打開iTunes,對電腦進(jìn)行授權(quán)信任,之后關(guān)閉itunes,打開定位工具,然后選取坐標(biāo)即可。
在項目功能中有一個定位CLLocation的需求,遇到了一些知識難點,經(jīng)過各位大俠的幫助,問題解決,特此分享供大家學(xué)習(xí),希望大家共同學(xué)習(xí)進(jìn)步。
一、簡單說明
1.CLLocationManager
CLLocationManager的常用操作和屬性
開始用戶定位- (void)startUpdatingLocation;
停止用戶定位- (void) stopUpdatingLocation;
說明:當(dāng)調(diào)用了startUpdatingLocation方法后,就開始不斷地定位用戶的'位置,中途會頻繁地調(diào)用代理的下面方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
每隔多少米定位一次
@property(assign, nonatomic) CLLocationDistance distanceFilter;
定位精確度(越精確就越耗電)
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;
使用定位功能,首先要導(dǎo)入框架,遵守CLLocationManagerDelegate協(xié)議,再創(chuàng)建位置管理器CLLocationManager
在iOS8.0后,定位功能需要在info.plist中加入NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription這兩個NSString類型字段,才能夠使用定位功能
代碼貼出來與大家共勉,各位看官自行研究
{ self.locationManager = [[CLLocationManager alloc] init]; _locationManager.delegate = self; if([CLLocationManager locationServicesEnabled] == NO) { // NSLog(@"沒有GPS服務(wù)"); } //地理位置精確度 _locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters; //設(shè)置距離篩選器,double類型,只要距離變化多少,就調(diào)用委托代理 self.locationManager.distanceFilter = kCLDistanceFilterNone; // meters [_locationManager requestWhenInUseAuthorization];// 前臺定位 [_locationManager startUpdatingLocation];}- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ NSLog(@"longitude = %f", ((CLLocation *)[locations lastObject]).coordinate.longitude); NSLog(@"latitude = %f", ((CLLocation *)[locations lastObject]).coordinate.latitude); CGFloat longTI=((CLLocation *)[locations lastObject]).coordinate.longitude; CGFloat latTI=((CLLocation *)[locations lastObject]).coordinate.latitude; //將經(jīng)度顯示到label上 _longitudeLabel.text = [NSString stringWithFormat:@"%f",longTI]; //將緯度現(xiàn)實到label上 _latitudeLabel.text = [NSString stringWithFormat:@"%f",latTI]; // 獲取當(dāng)前所在的城市名 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; //根據(jù)經(jīng)緯度反向地理編譯出地址信息 [geocoder reverseGeocodeLocation:locations.lastObject completionHandler:^(NSArray *array, NSError *error) { if (array.count 0) { CLPlacemark *placemark = [array objectAtIndex:0];// //將獲得的所有信息顯示到label上// self.location.text = placemark.name; //獲取城市 NSString *city = placemark.locality; if (!city) { //四大直轄市的城市信息無法通過locality獲得,只能通過獲取省份的方法來獲得(如果city為空,則可知為直轄市) city = placemark.administrativeArea; } // NSLog(@"city = %@", city); _cityName=city; } else if (error == nil [array count] == 0) { // NSLog(@"No results were returned."); } else if (error != nil) { // NSLog(@"An error occurred = %@", error); } }]; //系統(tǒng)會一直更新數(shù)據(jù),直到選擇停止更新,因為我們只需要獲得一次經(jīng)緯度即可,所以獲取之后就停止更新 [manager stopUpdatingLocation];}
以上是關(guān)于我給大家整理的IOS開發(fā)之詳解定位CLLocation,后續(xù)還會持續(xù)更新,希望大家能夠喜歡。
網(wǎng)站名稱:ios開發(fā)定位,iOS的定位
網(wǎng)頁URL:http://chinadenli.net/article30/dsgejpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、微信小程序、網(wǎng)站排名、網(wǎng)站策劃、搜索引擎優(yōu)化、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)