亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

iOS后臺持續定位實現方法

標簽:
iOS

1.选中target-->Gapability,打开Background Modes模式,并勾选Location updates

https://img1.sycdn.imooc.com//5d5e80ec0001746207080318.png

设置

2.代码如下:

ViewController.h
<pre>#import <UIKit/UIKit.h>

import <CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController<CLLocationManagerDelegate>

//定位管理对象
@property(nonatomic,strong)CLLocationManager *manager;

@end</pre>
ViewController.m
<pre>#import "ViewController.h"

@interface ViewController ()
{
CLGeocoder *_coder;
//存储上一次的位置
}
@end

@implementation ViewController

  • (void)viewDidLoad
    {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor whiteColor];
    //1.创建定位管理对象
    _manager=[[CLLocationManager alloc]init];
    _coder=[[CLGeocoder alloc]init];
    //2.设置属性 distanceFilter、desiredAccuracy
    _manager.distanceFilter=kCLDistanceFilterNone;//实时更新定位位置
    _manager.desiredAccuracy=kCLLocationAccuracyBest;//定位精确度

    if([_manager respondsToSelector:@selector(requestAlwaysAuthorization)])
    {
    [_manager requestAlwaysAuthorization];
    }
    //该模式是抵抗程序在后台被杀,申明不能够被暂停
    _manager.pausesLocationUpdatesAutomatically=NO;
    //3.设置代理
    _manager.delegate=self;
    //4.开始定位
    [_manager startUpdatingLocation];
    //5.获取朝向
    [_manager startUpdatingHeading];

}

pragma mark-CLLocationManager代理方法

//定位失败时调用的方法
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"%@",error);
}
//定位成功调用的的方法
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
if(locations.count>0)
{
//        获取位置信息
CLLocation *loc=[locations lastObject];
//        获取经纬度的结构体
CLLocationCoordinate2D coor=loc.coordinate;

    CLLocation *location=[[CLLocation alloc]initWithLatitude:coor.latitude longitude:coor.longitude];
    
    [_coder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {        CLPlacemark *pmark=[placemarks firstObject];        NSLog(@"%@",pmark.addressDictionary);        NSString *city=pmark.addressDictionary[@"City"];        if([city hasSuffix:@"市辖区"])
            city=[city substringToIndex:city.length-3];        if([city hasSuffix:@"市"])
            city=[city substringToIndex:city.length-1];        NSLog(@"%@",city);
    }];
}

}
@end</pre>
Appdelegate.m
<pre>#import "AppDelegate.h"

import <CoreLocation/CoreLocation.h>

import "ViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window.rootViewController=[ViewController new];
    return YES;
    }

  • (void)applicationDidEnterBackground:(UIApplication )application {
    if([CLLocationManager significantLocationChangeMonitoringAvailable])
    {
    ViewController
    vc=(ViewController *)self.window.rootViewController;
    [vc.manager stopUpdatingLocation];
    [vc.manager startMonitoringSignificantLocationChanges];
    }
    else
    {
    NSLog(@"significant Location Change not Available");
    }
    }

  • (void)applicationDidBecomeActive:(UIApplication )application {
    if([CLLocationManager significantLocationChangeMonitoringAvailable])
    {
    ViewController
    vc=(ViewController *)self.window.rootViewController;
    [vc.manager stopMonitoringSignificantLocationChanges];
    [vc.manager startUpdatingLocation];
    }
    else
    {
    NSLog(@"significant Location Change not Available");
    }
    }

@end</pre>



作者:CGPointZero
链接:https://www.jianshu.com/p/16f3eef4d4ff


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消