定位城市+iOS8 定位问题

2023-10-26

在IOS8中定位功能新增了两个方法:


- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);- (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);



这两个新增的方法导致,之前写的程序在iOS8运行会出现,定位功能无法正常使用

这样让iOS8正常使用定位功能呢?

<1>你需要在info.plist表里面添加两条变量

在Info.plist中加入两个缺省没有的字段

  • NSLocationAlwaysUsageDescription

  • NSLocationWhenInUseUsageDescription

这两个字段没什么特别的意思,就是自定义提示用户授权使用地理定位功能时的提示语。



这样在写代码:

    CLLocationManager  *locationManager = [[CLLocationManager alloc]init];    locationManager.delegate = self;    [locationManager requestAlwaysAuthorization];    locationManager.desiredAccuracy = kCLLocationAccuracyBest;    locationManager.distanceFilter = kCLDistanceFilterNone;    [locationManager startUpdatingLocation];


这是在调用代理


- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {    switch (status) {        case kCLAuthorizationStatusNotDetermined:            if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {                [locationManager requestWhenInUseAuthorization];            }            break;        default:            break;    }}


这样就Ok了,就会弹出原来的提示框



以下是全部的实现代码:


导入头文件   #import <CoreLocation/CoreLocation.h>

设置代理方法:

@interface PositioningController ()<CLLocationManagerDelegate>{

    UILabel * addressLabel;

}

//定位

@property(nonatomic,strong)CLLocationManager * locationManager;

//地址解析器

@property(nonatomic,strong)CLGeocoder * geocoder;

@end


@implementation PositioningController


- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view.

    self.locationManager.delegate =self;

    [self.locationManagerrequestAlwaysAuthorization];

    self.locationManager.desiredAccuracy =kCLLocationAccuracyBest;

    self.locationManager.distanceFilter =kCLDistanceFilterNone;

    [self.locationManagerstartUpdatingLocation];

    //开始定位

    [self.locationManagerstartUpdatingLocation];

    [selfcreateUI];

}

#pragma mark -懒加载

-(CLGeocoder *)geocoder{

    

    if (_geocoder ==nil) {

        

        _geocoder =[[CLGeocoderalloc]init];

    }

    return_geocoder;

}

-(void)createUI{


    addressLabel =[[UILabelalloc]initWithFrame:CGRectMake(20,50, 100,50)];

    addressLabel.backgroundColor =[UIColorlightGrayColor];

    [self.viewaddSubview:addressLabel];


}

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {

    switch (status) {

        casekCLAuthorizationStatusNotDetermined:

        if ([self.locationManagerrespondsToSelector:@selector(requestAlwaysAuthorization)]) {

            [self.locationManagerrequestWhenInUseAuthorization];

        }

        break;

        default:

        break;

    }

}

-(CLLocationManager *)locationManager{

    

    if (_locationManager ==nil) {

        

        //实例化定位对象

        _locationManager = [[CLLocationManageralloc]init];

        

        //2.判断定位服务是否可用

        if ([CLLocationManagerlocationServicesEnabled]) {

            

            //3.设置总是打开定位服务

            //代码打开,设置plist文件

            

            if ([UIDevicecurrentDevice].systemVersion.floatValue >=8.0) {

                

                [_locationManagerrequestAlwaysAuthorization];

            }

            //4.设置距离(多大距离刷新一次定位信息)单位:米

            _locationManager.distanceFilter  =10000;

            //5.设置代理

            _locationManager.delegate =self;

        }else{

            

            NSLog(@"定位服务不可用");

        }

    }

    return_locationManager;

}

-(void)parsingAddress{


    

}

#pragma mark -locationManager Delegate

//当位置刷新的时候会多次调用这个方法

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

    

    CLLocation  *location =locations[0];

    //拿到经纬度

    CLLocationCoordinate2D coord = location.coordinate;

    NSLog(@"%f",coord.latitude);

    NSLog(@"%f",coord.longitude);


    //参数:1.需要反编码的位置 2.编码结束后调用的block

    [self.geocoderreverseGeocodeLocation:location completionHandler:^(NSArray *placemarks,NSError *error) {

        

        if (placemarks.count >0) {

            

            CLPlacemark * place =placemarks[0];

            

            //存储地址信息的字典

            //place.addressDictionary =

            NSLog(@"%@",place.addressDictionary[@"FormattedAddressLines"][0]);

            //1.显示反解析得到的地址

            addressLabel.text =place.addressDictionary[@"FormattedAddressLines"][0];

    

        }else{

            

            NSLog(@"没有取到地址");

        }

    }];

   [self.locationManagerstopUpdatingLocation];

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定位城市+iOS8 定位问题 的相关文章

  • 定位城市+iOS8 定位问题

    在IOS8中定位功能新增了两个方法 void requestWhenInUseAuthorization OSX AVAILABLE STARTING MAC NA IPHONE 8 0 void requestAlwaysAuthoriz
  • iOS基础教程-SQLite数据库操作(二简单实例学生信息增删改查数据库操作)

    学生名单管理界面实现数据库的增删改操作 关于UI部分 我们使用storyboard简单完成 在上一篇文章中有详细的描述iOS基础教程 SQLite数据库操作 一 StoryBoard操作 SQLite操作前准备工作 本篇结束以后 就可以完成
  • iOS系统和XCode各版本发布日期

    本人收集了iOS系统和XCode各版本发布日期 供大家参考 发布或推送日期 版本编号 更新 2023年9月7日 iOS16 6 1 推出iOS16 6 1正式版 2023年7月24日 iOS16 6 推出iOS16 6正式版 2023年6月
  • JSBinding iOS与JS交互(When-iOS-loves-JS)

    What s JSBinding It s Not Hybrid It s NOT a new technology JSBinding 绑定JS和Native JSBinding和HyBrid的对比 原生OC语音和脚本JS语言对比 API
  • iOS架构-组件化(Carthage管理工具)

    一 Carthage项目管理工具使用 Step 1 安装 更新Homebrew工具 1 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install ma
  • TestFlight 添加测试人员 (内部测试人员)

    用有管理员身份的账号登陆 itunes connect 在登陆页面可以看到如下界面 选择用户和职能 会看到之前已经添加的用户 可以管理用户的app访问权限 找到 添加用户 输入用户的apple id一般是注册时候的邮箱地址形式 添加成功后会
  • iOS自动化布局-AutoLayout约束优先级

    约束的优先级 AutoLayout添加的约束中也有优先级 Priority 优先级的数值1 1000 分为两种情况 一种情况是我们经常添加的各种约束 默认值1000 最大值 优先执行 条件允许的话系统会自动满足我们的约束需求 第二种就是固有
  • flutter iOS 屏蔽黑暗模式

    前言 因为项目没有考虑到适配黑暗模式的场景 所以为了避免出现各种各样奇葩的问题 我们是建议把黑暗模式关闭 这样加能解决许多的bug 一 flutter层面设置 override Widget build BuildContext conte
  • iOS开发之 __block 与 __weak的区别理解

    资料来源1 资料来源2 block对象在block中是可以被修改 重新赋值的 使用了 weak修饰符的对象 作用等同于定义为weak的property 自然不会导致循环引用问题 因为苹果文档已经说的很清楚 当原对象没有任何强引用的时候 弱引
  • 定制化UINavigationBar

    FirstViewController 定制化UINavigationBar void customNavigationBar 按钮被挡住 原因是 navigationbar的透明度默认为YES 先取出navigationbar UINav
  • iOS开发判断版本号不同

    判断是否是第一次启动或者版本号不同时 NSString key CFBundleVersion 上一次打开的版本号 存储在沙盒中的版本号 NSString lastVersion NSUserDefaults standardUserDef
  • iOS集成Bugly详解

    异常上报 SDK 集成 通过CocoaPods集成 新建项目 cd 项目目录 vim Podfile source https github com CocoaPods Specs git inhibit all warnings plat
  • iOS开发之动画篇-基础篇1

    基础篇 一 制作动画的原理 十二个基本的动画原理 网页动画的十二原则 参考全部开源的HTML和CSS代码实现 二 寻找灵感 1 知名设计师共享平台 Dribbble相当于程序员的gitHub 2 pttrns 手机设计较多 三 制作动画的基
  • iOS面试题(2.类变量的@protected,@private,@public,@package声明各有什么含义)拓展:常用框架和第三方框架

    2 类变量的 protected private public package声明各有什么含义 private 作用范围只能在自身类 protected 作用范围在自身类和继承自己的子类 默认 public 作用范围最大 可以在任何地方被访
  • iOS APP 启动页和icon图标尺寸

    前言 记录一下竖屏iPhone启动页和icon图标尺寸 好记性不如烂笔头 1 启动页尺寸 320x480 640x960 640x1136 750x1334 1125x2436 1242x2208 1242x2688 828x1792 2
  • iOS 报错:没有查看权限the file "xxx.app" couldn't be opened because you don't have permission to view it.

    iOS the file xxx app couldn t be opened because you don t have permission to view it 问题解决方法汇总 1 最近重构项目 增加target来区分环境进行差异
  • iOS

    我们有的时候在创建UIView的时候 想要使用xib进行创建视图发现 xib文件不能和UIView文件一起创建 所以 我们要单独创建xib文件 我们选择Empty文件 而不要选择View文件 记得文件名和你之前创建的UIView文件名要一致
  • iOS架构-组件化(项目框架搭建2)

    静态库引用静态库 如果像上图一样 直接在业务层组件引用数据层组件的文件 则会报错 因为组件之间没有建立引用关系 如下图 静态库如何引用Pods第三方库 拷贝Podfile文件到项目 打开终端执行pad install 直接引用Pod下面的Y
  • iOS开发-国际化-配置App多语言

    作者 大慈大悲大熊猫 链接 http www jianshu com p 1edd4bda6fe5 來源 简书 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 基本设置 第一步 先在Project的info里添加所需要支
  • Testflight 添加外部测试人员

    内部测试人员 不需要提供所有的metadata 外部测试人员 为了使得外部人员可以测试app的预发布build 必须提供如下的metadata What to test App description Feedback email Mark

随机推荐

  • 关于淘宝cnpm 安装后cnpm不是内部或外部命令的解决办法

    今天通过网上查找的教程安装和配置了node环境 接着按照教程安装了cnpm 然而最后运用cnpm v查看版本却出现了如下的错误 不知道是自己在配置环境时出了什么问题 于是上网查了很多解决办法都不行 于是便自己寻找解决的办法 打开node安装
  • C++指向类成员的函数指针

    指向类成员函数的函数指针 定义 类成员函数指针 member function pointer 是 C 语言的一类指针数据类型 用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息 基本上要注意的有两点 1 函数指针赋值要使
  • docker报错:Cannot connect to the Docker daemon. Is the docker daemon running on this host?

    docker这种报错一般情况都是docker未启动对于这种情况只用重启docker就行了 service docker restart 还有一种情况则是docker配置文件出错按照提示查看报错 并找到相应位置进行更改 systemctl s
  • EL表达式

    一 EL表达式 1 命令格式 作用域对象别名 共享数据 2 命令作用 1 EL表达式是EL工具包提供一种特殊命令格式 表达式命令格式 2 EL表达式在JSP文件上使用 3 负责在JSP文件上从作用域对象读取指定的共享数据并输出到响应体 二
  • VUE中使用swiper

    效果图 安装 vue awesome swiper npm install vue awesome swiper 3 main js引入 引入swiper import VueAwesomeSwiper from vue awesome s
  • 导师放养也能投顶会?我从零开始、历经3次拒稿、最终发CVPR顶会论文的全过程分享!

    你想发顶会论文 或者做科研 但是导师放养 不管你 没有人带你 应该怎么办 要怎么起步 我会分3个版块 告诉你如何解决这个问题 一 导师在科研中本该起什么作用 1 科研的全流程是什么样 第一块 大家首先要对科研有一个整体的认知 科研的整个流程
  • BP神经网络——基于近红外光谱的汽油辛烷值预测

    BP神经网络 基于近红外光谱的汽油辛烷值预测 问题描述 获取数据 解题思路及步骤 1 产生训练集 测试集 2 创建 训练BP神经网络及仿真测试 3 性能评价 4 绘图 Matalab代码 问题描述 辛烷值是汽油最重要的品质指标 传统的实验室
  • 如何用c++实现异常处理

    博客主页 开心档博客主页 欢迎关注 点赞 收藏 留言 本文由开心档原创 51CTO首发时间 2022年12月16日 这世界很喧嚣 做自己就好 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢 本文介绍 异常是程序在执行期间产生的
  • 开发网站的过程中,经常会参考一些网站

    在我个人开发网站的过程中 经常会参考一些网站 我不擅长美工 所以一般页面都喜欢直接拿来用 再自己修饰一下 以下一些网站是我经常访问的 共享给大家 站酷 url http www zcool com cn url 拥有丰富的网站资源与模板 很
  • Effective C++

    条款01 视C 为一个语言联邦 将 视为一个由相关语言组成的联邦而非单一语言 条款02 尽量以const enum inline替换 define define处理与预处理阶段 而非编译阶段 因此此条款也可称为 宁可以编译器替换预处理器比较
  • 小白如何启动Vue项目?

    首先查看是否已经安装了 node js node v 之后 命令行会返回本机电脑上具体的版本号 如此 说明已经安装了nodejs 如果没有安装nodejs 请移步官网自行下载 https nodejs org zh cn node js安装
  • CSS学习笔记

    CSS 定义网页内容的样式 一 CSS引入 即如何将html与css联系起来 1 行内样式 将style作为一个标签的属性赋值 只能作用于当前标签 p align center style color red 将style作为一个标签的属性
  • UnitBox论文笔记(IOUloss)

    文章目录 Motivation 关于其他论文的一些观点 IoU损失 l2损失的缺点 iou损失forward过程 反传推导 UNITBOX NETWORK UnitBox An Advanced Object Detection Netwo
  • 华为OD机试 - 乱序整数序列两数之和绝对值最小(Java )

    题目描述 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大返回 以及绝对值 每种输入只会对应一个答案 但是 数组中同一个元
  • 机器学习模型的可解释性——LIME

    以下文章摘录自 机器学习观止 核心原理与实践 京东 https item jd com 13166960 html 当当 http product dangdang com 29218274 html 由于博客系统问题 部分公式 图片和格式
  • WebSocket入门教程(一)-- WebSocket简介

    转载请标明出处 http blog csdn net u010136741 article details 51502509 本文出自 柳木木 kylin 总目录 WebSocket入门教程 大纲 WebSocket是什么 WebSocke
  • CSS灯光效果,背景黑金效果

    先看效果 再看代码
  • 太阳能板最大面积

    题目描述 给航天器一侧加装长方形或正方形的太阳能板 图中的红色斜线区域 需要先安装两个支柱 图中的黑色竖条 再在支柱的中间部分固定太阳能板 但航天器不同位置的支柱长度不同 太阳能板的安装面积受限于最短一侧的那根支柱长度 如图 现提供一组整形
  • HTTPS阿里云免费SSL证书申请教程来了(白嫖指南)

    阿里云免费SSL证书是digicert品牌的DV单域名证书 一个阿里云账号一年可以申请20张免费SSL证书 免费SSL证书是在阿里云数字证书管理服务控制台申请的 阿里云百科来详细说下阿里云免费SSL证书申请方法 证书下载及第二年到期续费说明
  • 定位城市+iOS8 定位问题

    在IOS8中定位功能新增了两个方法 void requestWhenInUseAuthorization OSX AVAILABLE STARTING MAC NA IPHONE 8 0 void requestAlwaysAuthoriz