gpt4 book ai didi

iOS 11.4 不询问隐私使用情况(已设置隐私 - 运动使用说明)

转载 作者:行者123 更新时间:2023-11-28 11:53:43 25 4
gpt4 key购买 nike

我很难过,iOS 11.4 ( 15F79 ),iPhone 6。无法让应用程序请求运动数据。 info.plist 已通过编辑器设置,并通过在 textWrangler 中打开的 info.plist 进行了双重检查,还删除了 key 并通过 textWrangler 保存。

 <key>NSMotionUsageDescription</key>
<string>This app needs your Phones motion manager to update when the phone is tilted. Please allow this App to use your phones tilt devices</string>

我已经删除并重新安装了该应用程序大约 10 次。我已经重启手机 5 次了。我已经检查了设置,我的应用程序没有出现在 Privacy-Motion and Fitness 或设置中的其他任何地方。我使用的是免费开发者帐户,这可能与此有关?

我创建了一个新的 Xcode 游戏模板,除了导入 CoreMotion 和这段代码之外没有做任何改变

**** 已编辑,抱歉我忘了说我已经启动了实例,只是忘了把它放在这里,以防万一有人认为这是问题所在 ************

let motionManager = CMMotionManager()

override func didMove(to view: SKView) {

motionManager.startDeviceMotionUpdates()

if motionManager.isDeviceMotionActive == true {
motionManager.accelerometerUpdateInterval = 0.2
motionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler: {
(accelerometerData: CMAccelerometerData!, error: NSError!) in
let acceleration = accelerometerData.acceleration
print(accelerometerData)
} as! CMAccelerometerHandler)
}else{
print(CMMotionActivityManager.authorizationStatus().rawValue)
}

它向控制台打印 0(枚举 - 大小写未确定)。

在我的实际应用中,它是 3(相同的枚举 - 大小写被拒绝)。

正如我所说,我已经通过 Xcode 和 text wrangler(一种代码编辑器)卸载、重新安装、编辑 plist,尝试了上面代码的不同版本,在不同的地方尝试了代码(在移动到 View 中,在类)尝试关闭苹果文档的代码。等等....我还没有被问到 NSUsage 问题,应用程序一直崩溃。

我一直在寻找启动警报的方法,如 CLLocationManager.requestWhenInUseAuthorization() 但我找不到可比较的 CMMotion 版本(我认为没有。)我创建了一个新的 swift 文件,已导入Foundation 和 CMMotion,只是把代码放在那里,但仍然没有警报要求运动数据。

我尝试了一个单一 View 应用程序模板而不是一个游戏模板,认为这可能是问题所在,不。

我该怎么办?

感谢任何帮助。谢谢

最佳答案

您混淆了两个相关但不同的类。

CMMotionManager 提供对加速度计、磁力计和陀螺仪数据的访问。它不需要任何用户许可,因为此信息不被视为与隐私相关。

在您的 else 子句中,您正在检查 CMMotionActivityManager 的授权状态。此对象报告设备运动类型(步行、运行、驾驶)。此信息被视为与隐私相关,当您创建此类的实例并从中请求数据时,将显示权限警报。

你的 else 被触发的原因是因为你正在检查 isDeviceMotionActive;在您调用 startDeviceMotionUpdates 之前,这将是 false,您永远不会这样做。即使您使用了 isAccelerometerActive,您也会遇到问题,因为您在 if 子句中调用了 startAccelerometerUpdates,而该子句永远不会到达。

您可能打算检查 isAccelerometerAvailable。如果这返回 false 那么您无能为力;该设备没有加速度计。

更新

在调用 startDeviceMotion 之后立即检查 isDeviceMotionActive 是没有意义的:

  1. 你知道它是活跃的;你才刚刚开始
  2. 我想启动需要一些时间,所以如果您立即检查,您可能会得到 false

Apple 建议您不要为每种运动设备类型配备一个以上的观察者,因此检查 is...Active 的目的是确保您不会调用 如果您已经这样做,请再次开始...

如果您只需要陀螺仪数据,则根本不需要调用 startDeviceMotionUpdates

关于iOS 11.4 不询问隐私使用情况(已设置隐私 - 运动使用说明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51468997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com