删除 iOS 中的后台位置警报?

2024-07-04

我正在编写一个跟踪用户位置的导航应用程序。

为了继续显示有关路线的通知(当手机锁定、接听电话等时) - 我还需要在应用程序处于后台时继续跟踪位置:(Capabilities>Background Modes>Location updates, locationManager.allowsBackgroundLocationUpdates = true)

我已经为这个问题苦苦挣扎了很长一段时间,并阅读了很多相关内容,但找不到我正在寻找的答案。 我已经实现了这两个选项:

选项 1 - 在使用时请求

(locationManager.requestWhenInUseAuthorization()):

每当应用程序位于后台时,每个应用程序顶部都会有一个额外的蓝色位置警报栏。

  1. 有没有办法删除这个横幅?或者只能在很短的时间内获得它?再次-我 不能用locationManager.stopUpdatingLocation()- 因为我需要 他们在后台。

选项 2 - 始终请求 (locationManager.requestAlwaysAuthorization()):

一段时间后,我的用户收到后台位置可怕的提示消息。例子:

“APP”一直在后台使用您的位置。你想要_____吗 继续允许这样做吗?

  1. 有没有办法删除这条消息? (以位智为例 - 相同 权限,但我很确定我从未收到过这样的消息)
  2. 我可以停止在后台获取位置更新吗仅当 应用程序被终止?并避免应用程序被唤醒(我实际上不想要这些位置)?我尝试使用locationManager.stopUpdatingLocation()终止应用程序时 - 开启applicationWillTerminate(_ application: UIApplication)

看来这两种情况不仅是糟糕的用户体验,会阻碍用户,而且在其他基于位置的应用程序中也很罕见。

我不知道我在这里错过了什么。


您提到的两种机制都是操作系统为了保护用户而设置的。它们不仅提醒用户后台有应用程序正在检索其位置,而且还提醒用户某些不再需要时可能会消耗电池。

没有办法避免这种情况,因此您应该根据应用程序的需要来决定哪一个最适合。

例如,某些应用程序提供有关路线的指示,这些应用程序往往在顶部有蓝色横幅(请参阅谷歌地图 https://itunes.apple.com/us甚至苹果地图)。

另一方面,其他一些应用程序有兴趣随时获取位置更新(例如健身应用程序或跟踪您所有运动的应用程序,请参阅Moves https://itunes.apple.com/gb/app/moves/id509204969?mt=8)。在这种情况下,用户将收到一次关于此应用程序在后台持续使用其位置的事实的警告,如果他们接受,则不会再次受到打扰(iOS 8 及更高版本)。

以下是 Apple 工作人员提供的有关选项 2 的一些信息:

在应用程序获得“始终”授权并开始在后台使用位置服务几天后,系统将要求用户再次确认他们仍然希望该应用程序在后台跟踪他们的位置。

如果应用程序在后台获取用户的位置,则开发人员无法采取任何措施来避免此确认。

来源:苹果论坛 https://forums.developer.apple.com/thread/48092

来源:关于 iOS 8 及更高版本中的隐私和位置服务 https://support.apple.com/en-us/HT203033

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

删除 iOS 中的后台位置警报? 的相关文章

  • 无法加载捆绑包“MyProjectUITests”,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包

    我愿意向我的应用程序添加单元和 UI 测试 我首先成功配置了单元测试 我尝试对 UI 测试执行相同的操作 添加新的 UI 测试包目标后 这是我的 Podfile platform ios 8 0 use frameworks inhibit
  • i识别人的扫描图像中的眼睛

    我想开发一个 iPhone 应用程序 它应该识别 QR 阅读器扫描的图像中人的眼睛 脸部和肤色 如何在图像中检测眼睛 虽然这可能是可能的 但我只是警告您 无论编程如何 它都会有一定程度的不准确性 任何面部 视网膜检测软件都可能被欺骗 并且考
  • 如何在 Swift 中将数据转换为双精度型、整数型和字符串型等类型?

    我正在努力在 iOS Swift 中为 shapefile 一种 GIS 格式 与这个问题不是特别相关 构建一个自定义文件打开器 这些文件有一个 100 字节长的标头 我可以将其读入 4 字节数组 其中存储我想要的信息 我可以将这些数组转换
  • 有没有办法将协议属性声明为私有?

    我想遵守一个协议 并隐藏要访问的符合的属性 将它们声明为private 考虑以下 protocol P var value String get init value String class C P var value String re
  • Spotify 会话管理

    我在我的应用程序中有一个 Spotify 登录并尝试进行自动登录 登录功能 func getSpotifyToken fromController controller UIViewController success spotifyTok
  • RestoreCompletedTransactions() 没有调用 paymentQueue UpdatedTransactions?

    我在 Swift 4 iOS 11 中恢复 IAP 时遇到问题 我的AppDelegate实施SKPaymentTransactionObserver In AppDelegate s didFinishLaunchingWithOptio
  • 如何检查Python的坐标是否在特定区域内

    可以说我有两种坐标 第一个称为center point第二个叫test point 我想知道是否test point坐标在内部靠近或不靠近center point通过应用协调radius临界点 如果我写的话 就像 center point
  • 将按钮与 ScrollView 中的底部对齐

    我正在尝试将按钮与 ScrollView 底部对齐并使 ScrollView 填充页面 第一张截图是它的样子 第二张截图是我想要的 在屏幕截图中 未使用 ScrollView 因为没有足够的项目 但 ScrollView 内的项目数量不固定
  • sqlite+fmdbvacuum命令后内存泄漏(?)

    我通过 FMDB 包装器在我的应用程序中使用 sqlite 在调用 VACUUM 之前 我的应用程序中的内存使用量为 2 25 MB myFmdb executeUpdate VACUUM 后记是 5 8 MB 我似乎无法回收内存 真空后
  • AVAssetResourceLoaderDelegate 未被调用

    我一直在尝试在AVAssetResourceLoaderDelegate协议但它似乎从未被调用 我已经验证一切都发生在主线程上 从创建AVURLAsset 创建AVPlayerItem 创建委托 并将委托队列设置到主线程 我正在尝试流式传输
  • UIDatePicker 在 iOS 9 中无法正常显示

    我没有使用自动布局 这就是 UIDatePicker 在 iOS 9 上我的应用程序中的显示方式 选择器在 iOS 8 中看起来完美无缺 但问题仅存在于 iOS 9 中 知道如何解决此问题 P S 使用 auto布局目前对我来说不是一个解决
  • 导航栏标题视图对齐

    我希望我的导航栏在中间显示两件事 其中之一是列表名称 另一个是用户名称 用户名将放置在列表名称下 到目前为止我所做的是 我以编程方式创建了两个标签和一个超级视图 并设置titleView of navigationItem override
  • 如何才能运行性能测试十次以上?

    默认情况下 Xcode 性能测试会运行十次 我的结果是这十次测试的平均值 问题是每次运行时平均结果变化很大 因此我必须运行测试至少五次才能获得收敛结果 这既乏味又耗时 有没有办法配置 XCode 或单元测试本身运行十次以上 XCTestCa
  • 不要在 iOS 上显示蜂窝数据警告

    如果用户决定不允许应用程序在每次尝试打开应用程序时访问蜂窝数据 则会显示一条警告 告诉他们蜂窝数据已关闭 SDK中有没有办法停止显示此消息或控制其显示的时间 位置 如果您在权限被撤销的情况下尝试访问互联网 系统将显示此消息 为了防止它出现
  • 蓝牙管理器在 iOS 7 上不工作

    我尝试在 iOS 7 上的应用程序中使用蓝牙管理器 但它似乎不起作用 Calling setEnabled and setPowered 蓝牙管理器上没有任何效果 我正在注册通知 BluetoothAvailabilityChangedNo
  • 如何重试基于块的 URL 请求

    我正在使用 iOS7 的新 URL 请求方法获取数据 如下所示 NSMutableURLRequest request NSMutableURLRequest requestWithURL NSURL URLWithString self
  • 为什么 UIPickerView 是半透明的

    Why UIPickerView 100不是不透明的吗 当我将文本颜色设置为白色并将 UIPickerView 放在红色背景上时 UIPickerView 项目有一个红白色文字颜色 我尝试使用自定义视图viewForRow 但还是没有效果
  • 如何使 macOS 菜单文本动态化?

    我试图使菜单项的文本 在 Mac 应用程序中 动态化 如下所示 main struct VeyBoardApp App State var optionsHidden Bool false var body some Scene Windo
  • 在 Xamarin.Forms 中添加方向更改布局

    我需要实现的是 在将屏幕从纵向更改为横向时向现有页面添加布局 我已经成功地使用检测方向变化void OnSizeAllocation 双倍宽度 双倍高度 但我无法为此事件添加布局 我的示例 C 代码是 public class MyLayo
  • IOS - React Native - 未处理的 JS 异常:SyntaxError

    每当我创建新的 React Native 项目时 我都会遇到问题 显示红色屏幕 并在 xcode 控制台中收到以下错误消息 嗨 我有同样的问题 在这里找到了解决方案 https github com facebook react nativ

随机推荐

  • GWT UiBinder 不加载样式表

    我想使用 UiBinder 制作一个 GWT 小部件 所以我做了 UserPanel ui xml 像这样
  • IF 语句中间的 GO 命令

    我正在寻找有关创建表的信息 仅当它们在当前数据库中不存在时 以便能够在可能或可能没有它们的不同数据库中创建它 并发现这两个有用的主题 SQL Server 检查表是否存在 https stackoverflow com questions
  • 无法在 Debian lenny 上安装 python 模块“pycrypto”

    我尝试通过下载源代码并执行以下命令来安装 pycrypto 模块python setup py install 然后出现错误 running install running build running build py running bu
  • Rails 3 使用 NOT NULL 在 .where 条件之后排序

    我有一个显示最快用户的排名 users User find sort a b b finished at lt gt a created at 现在我必须添加一些代码以防止由于finished at beeing而出现错误nil直到用户完成
  • Android 嵌套片段问题“java.lang.IllegalStateException:活动已被销毁”

    您可能知道 Android 支持嵌套片段 也是通过 API 级别 17 的支持库实现的 所以基本上我正在尝试将嵌套片段添加到 ViewPager 的片段之一中 并熟悉这一新的好功能 在第一次应用程序启动时 一切都按预期工作 即我可以添加子片
  • Oracle ProC INSERT INTO VALUES ( (选择 ...) )

    在 Oracle 10g 上运行 Pro C 我希望在插入语句值子句中执行子查询 该 sql 查询完全有效 并且在 TOAD 中运行没有任何问题 但 Pro C 无法解析该查询 EXEC SQL INSERT INTO TARGET ATT
  • 获取矩阵中总和值最大的列

    比方说 import numpy as np f np matrix 1 2 3 4 5 6 是否可以从矩阵中检索具有最大列和的列数 如何 你可以写 gt gt gt f sum axis 0 argmax 1 所以专栏1求和到最大的值 为
  • 如何将默认的 binutils 转换为 binutils-2.26?

    当我命令 make 时 我收到如下错误 usr bin ld lib liblmi a LMInterface o unrecognized relocation 0x2a in section text 这个错误是由早期版本的 binut
  • 在 Swift 中捕获 [weak self] 的 Realm 通知

    在 Swift 的 Realm 文档中 有关以下内容的部分通知 https realm io docs swift latest notifications有这个示例代码 class ViewController UITableViewCo
  • 如何解决 CMake 错误“无法找到 MPI”

    我正在尝试在 48小时 全新的 ubuntu 20 04 3 安装上运行 CMakeLists txt 文件 我在运行时不断收到以下错误cmake Could NOT find MPI CXX missing MPI CXX WORKS C
  • 带有主机工具链的 buildroot 环境

    为了运行测试用例等 我想为主机系统编译我们的 buildroot 环境的一部分 usr bin gcc 等 我尝试在 usr 中指定 external toolchain 但失败了 有没有人设法做这样的事情 buildroot 手册说这是不
  • 同时在不同层中使用多个 CAKeyframeAnimation

    现在有人知道如何使用 CAKeyframeAnimation 同时对多个图层进行动画处理吗 每个层都有自己的 CAKeyframeAnimation 对象 看看下面的代码 我有一个接收对象 创建 CAKeyframeAnimation 并将
  • 使用 setuptools 从私有 Gitlab 包存储库安装 Python 包

    我为我的雇主创建了一个私人套餐 由于我被禁止将其上传到 PyPI 它是专有的 因此我将其上传到我们私人 Gitlab 中心上的项目的包索引中 我可以手动安装它 pip install my package extra index url h
  • 使页脚正确粘贴到页面底部[重复]

    这个问题在这里已经有答案了 我试图让我的页脚 只是一个带有一行文本的div 位于屏幕底部 如果内容没有一直到达底部 或者位于内容的底部 如果内容需要滚动条 如果内容不需要滚动条 它可以完美工作 但是当内容太长时 页脚仍然位于同一位置 位于内
  • 但很难用 jq 解析 JSON

    我正在慢慢掌握 jq 的工作原理 但距离掌握它还很远 现在我处于一种情况 我已经设法得到了我想要的东西 但没有按照我想要的方式显示它 我确信这很简单 但我错过了 这是我要解析的 JSON 示例 sites site id 123456 st
  • 如何在 JObject 中添加或更新 JProperty 值

    我目前正在使用以下扩展方法来执行此任务 但似乎应该有一些现有的包含方法或扩展来执行此任务 或至少是其中的一个子集 如果里面没有任何东西Json NET那么推荐的流程是什么 或者我如何更改下面的代码以更接近推荐的流程 public stati
  • 如何将嵌入的 YouTube 视频的帧(通过 iframe)写入画布?

    我希望能够从 YouTube 视频中的各个点 不仅仅是缩略图 提取帧 并对它们进行一些处理 我可以使用 iframe API 将视频嵌入到我的网站中 但我正在努力寻找一种将其捕获到画布上的方法 如果我被迫捕获整个屏幕 也可以 如果我必须更改
  • 如何限制匿名子类的创建(Java)

    抱歉 我之前没有正确表述这个问题 我尝试实现工厂模式 一个更好的例子 它是一个带有 create 函数的抽象类 Human 根据创建时传递的参数 它决定是返回其子类 Man 的实例还是返回 Woman 子类的实例 因此 您可以使用以下命令调
  • JavaScript。如果数组包含重复数字,Array .sort() 方法会为 Chrome 和 Firefox 返回不同的结果

    我有包含随机数的数组 当我试图通过排序这个数组时 sort 方法 如果数组包含重复的数字 结果会不同 下面的代码在 Chrome 和 Firefox 中的工作方式有所不同 1 2 3 4 5 6 7 8 9 2 15 3 4 5 1 2 3
  • 删除 iOS 中的后台位置警报?

    我正在编写一个跟踪用户位置的导航应用程序 为了继续显示有关路线的通知 当手机锁定 接听电话等时 我还需要在应用程序处于后台时继续跟踪位置 Capabilities gt Background Modes gt Location update