精华内容
下载资源
问答
  • [译] iOS 请求定位权限

    2021-01-13 17:20:45
    定稿:CMB在 iOS 中用户的位置信息被视个人隐私,所以在获取时需要向用户请求权限。本篇教程将讲述向用户请求权限的步骤。开发环境 Xcode 8 Beta,运行环境 iOS 10。打开 Xcode 然后创建一个新的单视图应用...

    作者:IOSCREATOR,原文链接,原文日期:2016-10-13

    译者:冬瓜;校对: Cwift;定稿:CMB

    在 iOS 中用户的位置信息被视为个人隐私,所以在获取时需要向用户请求权限。本篇教程将讲述向用户请求该权限的步骤。开发环境为 Xcode 8 Beta,运行环境为 iOS 10。

    打开 Xcode 然后创建一个新的单视图应用(Single View Application)。

    如图所示,点击 Next。将工程名命名为 IOS10RequestingPermissionTutorial,自行填写 Organization Name 和 Organization Identifier。选择 Swift 作为编程语言,适配设备选择 iPhone。

    编辑 Storyboard。将一个按钮控件拖入主视图。双击按钮视图编辑文字改为 “Get Location”。如下图所示:

    打开 Assistant Editor 并确保 ViewController.swift 文件可见。按住 Ctrl 键从按键控件拖拽到 ViewController 这个类中来创建一个 Action。

    转到 ViewController.swift 文件并添加以下代码导入 Conre Location 框架。 import CoreLocation复制代码

    让 ViewController 遵循 CLLocationManagerDelegate 协议。并修改该类的定义: class ViewController: UIViewController, CLLocationManagerDelegate {}复制代码

    增加以下属性: let locationMgr = CLLocationManager()复制代码

    CLLocationManager 是原生的 GPS 坐标管理对象。接下来按照以下代码来实现 getMyLocation 方法: @IBAction func getLocation() {

    // 1

    let status = CLLocationManager.authorizationStatus()

    // 2

    if status == .notDetermined {

    locationMgr.requestWhenInUseAuthorization()

    return

    }

    // 3

    if status == .denied || status == .restricted {

    let alert = UIAlertController(title: "Location Services Disabled", message: "Please enable Location Services in Settings", preferredStyle: .alert)

    let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)

    alert.addAction(okAction)

    present(alert, animated: true, completion: nil)

    return

    }

    // 4

    locationMgr.delegate = self

    locationMgr.startUpdatingLocation()

    }复制代码

    authorizationStatus 对象将返回授权状态。

    保证 app 在前台运行时,当定位更新后获取定位。

    当定位服务被禁用时,用户将收到提示。

    确定代理对象为当前的 ViewController

    然后实现 CLLocationManager 的代理方法。 // 1

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    let currentLocation = locations.last!

    print("Current location: \(currentLocation)")

    }

    // 2

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {

    print("Error \(error)")

    }复制代码

    当前位置坐标输出到控制台。

    当定位无法更新时输出错误原因。

    要在 app 运行时请求 GPS 定位权限,需要在 info.plist 中设置新的属性键(Key)。单击鼠标右键选择添加行,并输入以下值:

    在 Build 并运行工程时,app 会主动寻求定位授权:

    点开控制台中的位置箭头,选择一个预定义的位置。控制台会打印当前的 GPS 定位。 Current location: +/- 5.00m (speed -1.00 mps / course -1.00) @ 9/12/16, 3:25:27 PM Central European Summer Time

    Current location: +/- 5.00m (speed -1.00 mps / course -1.00) @ 9/12/16, 3:25:28 PM Central European Summer Time

    Current location: +/- 5.00m (speed -1.00 mps / course -1.00) @ 9/12/16, 3:25:29 PM Central European Summer Time

    Current location: +/- 5.00m (speed -1.00 mps / course -1.00) @ 9/12/16, 3:25:30 PM Central European Summer Time

    Current location: +/- 5.00m (speed -1.00 mps / course -1.00) @ 9/12/16, 3:25:31 PM Central European Summer Time

    Current location: +/- 5.00m (speed -1.00 mps / course -1.00) @ 9/12/16, 3:25:32 PM Central European Summer Time复制代码

    你可以在 Github 上的 ioscreator 仓库中下载 IOS10RequestingPermissionTutorial 的源码。

    本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 swift.gg。

    展开全文
  • App 重启后,定位权限会重新变成 NotDetermined,下次开启定位时再申请定位权限会重新弹框让用户确认; 3. 在 iOS 13 系统,申请 WhenInUse 或 Always 权限时,系统都会先弹出来下面的弹框让用户选择: "使用app时...

    1. iOS7以前
    系统配置之后出现:永不、始终 选项
    2. iOS8-10
    系统配置之后出现:永不、始终 选项 
    通过配置 NSLocationWhenInUseUsageDescription 可出现 使用应用期间 选项
    3.  iOS11+
    不用配置NSLocationAlwaysUsageDescription,就会出现永不、始终、使用应用期间 选项
    4. OS13
    1.增加 允许一次 选项
    用户选择 Allow Once 
    iOS 13 提出了 Temporary authorization 的概念。当用户选择 Allow Once 后,我们的 App 就获得了 Temporary authorization ,也就是临时权限。

    该权限有以下特点:
    1. 实际的权限类型是:WhenInUse;
    2. App 重启后,定位权限会重新变成 NotDetermined,下次开启定位时再申请定位权限会重新弹框让用户确认;
    3. 在 iOS 13 系统,申请 WhenInUse 或 Always 权限时,系统都会先弹出来下面的弹框让用户选择:
    "使用app时允许、允许一次、不允许"
    用户选择 Allow While In Use
    如果用户选择 Allow While In Use ,我们的 App 会获得 WhenInUse 权限。
    如果之前申请的是 WhenInUse 权限,那么就跟 iOS 13 之前版本的系统表现没什么区别;
    系统会在某个时间再弹出一个弹框询问用户是继续给我们的 App WhenInUse 权限,还是切换成 Always 权限,iOS 13 中,没法直接向用户要 Always 权限了,必须要经过一个二次确认。

    备注:系统确认弹窗弹出时,为打断状态(UIApplicationStateInactive)。

    参考资料:
    https://www.jianshu.com/p/39e6d61b256c
    http://foogry.wang/2019/09/18/2019-09-18-ios-ding-wei-quan-xian-na-xie-shi/

    展开全文
  • plus.android.requestPermissions(["android.permission.READ_PHONE_STATE"], ...0){ //权限被永久拒绝// 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启console.log('Always Denied!!! '+e.denied...

    plus.android.requestPermissions(["android.permission.READ_PHONE_STATE"], function(e){

    if(e.deniedAlways.length>0){ //权限被永久拒绝

    // 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启

    console.log('Always Denied!!! '+e.deniedAlways.toString());

    }

    if(e.deniedPresent.length>0){ //权限被临时拒绝

    // 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限

    console.log('Present Denied!!! '+e.deniedPresent.toString());

    }

    if(e.granted.length>0){ //权限被允许

    //调用依赖获取定位权限的代码

    console.log('Granted!!! '+e.granted.toString());

    }

    第一次安装请求权限的时候,显示权限被永久拒绝,第二次就可以。定位权限也是这个问题。

    展开全文
  • 我们知道安卓系统在6.0之后权限改动很大,而且app不能打开或者使用安卓系统的权限,但是我们可以在用户启动app时提醒用户去开启某些权限。如定位服务功能。代码如下: 1.我们需要在manifest.json文件中配置安卓...

    我们都知道安卓系统在6.0之后权限改动很大,而且app不能打开或者使用安卓系统的权限,但是我们可以在用户启动app时提醒用户去开启某些权限。如定位服务功能。代码如下:

    1.我们需要在manifest.json文件中配置安卓用户定位服务权限

    2.在app.vue中编写提示用户开启定位功能的代码:

    3.在onlauch中进行判断调用

     

    转载于:https://www.cnblogs.com/zjy850984598/p/10819847.html

    展开全文
  • uniapp的 安卓app 定位权限被拒绝后,询问是否开启授权并跳转到手机设置页面 询问是否授权定位->拒绝定位授权->再次访问提示是否打开授权->跳转至手机设置页面 uni.getLocation({ type: 'gcj02', success...
  • android webview定位权限请求

    千次阅读 2018-12-26 09:11:55
    公司项目混合应用,h5界面用了百度定位,在手机系统浏览器上会弹出定位权限请求框,但在app的webview上就没响应,查看资料,发现还需要实现WebChromeClient类的onGeolocationPermissionsShowPrompt方法,步骤如下: ...
  • if let appSettings = NSURL(string: UIApplicationOpenSettingsURLString) { if isLocationServiceOpen() { let alertCon = UIAlertController.init(title: "端末位置坐标没有被允许,引导用户去设置打开坐标",
  • 手机app弹出提示询问获取定位权限,有三个选项,仅使用期间允许这个选项是什么用途呢 主要用于防止app在后台获取用户的定位信息。
  • Android 动态申请定位权限

    千次阅读 2020-03-30 17:21:11
    AndroidManifest.xml(清单文件)添加需要的权限 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用于进行网络定位 --> <uses-permission android:name=...
  • Toast.makeText(getApplicationContext(), "webView 申请权限", Toast.LENGTH_SHORT).show(); } }); webView.loadUrl("https://common.diditaxi.com.cn/general/webEntry?&bizid=257&channel=70365");
  • iOS 定位服务权限问题

    2020-12-31 09:10:28
    iOS10以上app需要定位服务,请先在infoplist中添加位置权限[Privacy - Location When In Use Usage Description]string 此app需要访问位置[Privacy - Location Always Usage Description]string 此app需要访问位置1....
  • 一次定位及设置前台授权和后台定位1. 首先导入头文件 #import 2. 添加位置管理者属性 @property(nonatomic,strong)CLLocationManager*mgr;3. 创建定位管理者 统一管理定位服务 _mgr= [[CLLocationManageralloc]init]...
  • 背景近期因实际项目需要,在特定操作下触发定位请求,取到用户位置及附近位置。问题:经初步选型,最终决定接入百度定位,按照百度定位SDK Android文档,接入过程相对顺利。但随后发现,在小米系列等部分机型上,...
  • [问题反馈]【严重安全问题】开启了定位权限,但是软件还是没权限6332电梯直达明年暑假升初中初窥门径发表于 2020-11-16 11:55:29来自:HUAWEI Mate 40 Pro最新回复 2020-11-16 12:52:15肯德基,微信小程序是这样...
  • import android.app.Activity;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.location.LocationManager;import android.provider.Settings...
  • uni-app 怎样打开位置权限

    千次阅读 2019-12-05 22:29:49
    manifest.json 设置权限 地图定位勾选 还有安卓手机打包权限配置打开 onShow() { //打开地图 chooseLocation() ...export function chooseLocation(success){ // 先判断定位权限是否开启 uni.get...
  • react native定位请求开启位置权限

    千次阅读 2019-01-11 17:36:26
    react native 在使用 Geolocation 定位获取经纬度的时候w,如果用户不开启位置信息,不打开gps,则会报错,所以一开始应该判断用户有没有开启位置信息,如果没有的话请求用户打开位置信息 我在android react-native-...
  • 首次安装一个App时,App只要进行网络请求,就会触发 app 首次启动会弹出一个询问用户“是否允许应用访问数据”的弹框,类似下图: 因此很容易猜测出这样的结论: 用户点“允许”之前,网络请求全都是失败的(例如...
  • uni-app 手机端定位问题

    千次阅读 2021-07-31 11:19:15
    主要遇到的问题,app上android无法获取定位信息,ios可以,模拟器上可以获取定位,H5浏览器中获取定位同样失败 做法: uni.getLocation({ type: 'wgs84', geocode: true, success: function (res) { console....
  • 起因用户群反馈app可能请求了不合适的定位权限:始终定位。看到这个截图,根据经验判断可能是后台定位功能导致可能不得不请求始终定位权限。再加上之前提交审核时,苹果要求在plist文件中新增...
  • iOS Swift 判断应用定位权限

    千次阅读 2016-01-26 17:31:20
    1 .NotDetermined 表示用户还未对该应用的定位权限做出选择,但是一般如果用到定位,一进入app的时候就会自动弹出提示框用户选择启用或者禁止,这个状态应该说进入程序后就不存在了 2 .Restricted 表示GPS
  • 当我们在使用uni.getLocation的API时,会发现用户并没有开启微信信息服务或者没有授权位置信息权限,而导致回调fail,那么就需要去判断并引导用户前往开启。 判断是否开启位置信息服务(安卓Android) ...
  • 现在发现一个问题,在iOS10以上中,当app在手机第一次安装的时候,苹果会默认弹出一个是否允许app使用数据的弹框,允许后首页一片空白,之前做那个app没在关注过这一次,因为首页有下拉刷新这个功能,并且这个问题是...
  • 为什么app启动的时候默认就需要这两项权限呢?哪怕什么不做,就一个测试空白页面,也需要这两项权限。而且,在app启动时调用以下代码获取位置权限也不会执行。一定默认的这两项权限执行后,再第二次启动app才会...
  • 一般在项目中添加权限只需要看这一篇文章:...定位权限一般有四个:NSLocationWhenInUseUsageDescriptionNSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationUsageDescrip...
  • } // 再次获取授权 // 当用户第一次拒绝后再次请求授权 openConfirm(){ uni.showModal({ title: '请求授权当前位置', content: '需要获取您的地理位置,请确认授权', success: (res)=> { if (res.confirm) { uni....
  • Android 运行时请求权限

    万次阅读 2016-09-15 12:02:10
    在Android 6.0(API level 23)之后,用户是在应用运行时才去授予权限给应用,而不是在用户安装app的时候。这种方法 简化了应用的安装过程,因为用户无需在应用安装或升级时去授予权限给应用。这也可以让用户更有效...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,409
精华内容 10,963
关键字:

为什么app都要请求定位权限