Flutter-geolocator: iOS 不要求位置权限

创建于 2019-01-25  ·  15评论  ·  资料来源: Baseflow/flutter-geolocator

🐛 错误报告


iOS 模拟器不要求位置权限。 似乎设备只是跳过或“挂起”。 当我尝试手动获取geolocator.getCurrentPosition 时(通过按下按钮)它返回null 。 对于 Android,一切都按预期工作。 我已经使用geolocator.checkGeolocationPermissionStatus()检查了位置权限,它是
GeolocationStatus.unknown

预期行为

iOS 模拟器应该请求用户对位置服务的权限。

繁殖步骤

配置

版本: 2.1.1

平台:

  • [12.1]:iphone:iOS

最有用的评论

@dstuff @kika @JStuve @StephanCassel
我修好了它! 我在 Info.plist 上使用了这个权限 NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription。 但是该应用程序设置为针对 iOS 8,Flutter 默认。 但是 NSLocationAlwaysUsageDescription 只能与 iOS 10+ 一起使用。 这弄乱了 iOS 应用程序上的权限提示。 我删除了并且它起作用了,请求许可,我可以获得位置。 我希望这也可以帮助你们。

所有15条评论

我注意到的是,当应用程序首次安装并访问定位服务时,系统会弹出一个对话框请求许可,同时checkPermissionStatus()返回unknown 。 如果用户允许访问,则应用程序可以继续获取Position
应该有一种方法可以等待用户允许或拒绝请求。

我有完全相同的问题。 Android 运行良好,但在 iOS 中我添加了NSLocationWhenInUseUsageDescription ,但是我从未收到权限访问提示,因此checkGeolocationPermissionsStatus()始终unknown 。 这也适用于物理设备和模拟器。

几个小时同样的问题。 安卓运行良好。 iOS给了null。
我从模拟器中删除了 iOS 应用程序并重新启动。 之后它完美地工作。 噗。
由于 podfile 中缺少信息,我遇到了一些启动问题。 它可能会导致问题。

这里也是一样。 从设备和模拟器中删除应用程序,重新安装,同样的事情。
当尝试获取位置时出现以下异常:ERROR_ALREADY_REQUESTING_PERMISSIONS

@dstuff @kika @JStuve @StephanCassel
我修好了它! 我在 Info.plist 上使用了这个权限 NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription。 但是该应用程序设置为针对 iOS 8,Flutter 默认。 但是 NSLocationAlwaysUsageDescription 只能与 iOS 10+ 一起使用。 这弄乱了 iOS 应用程序上的权限提示。 我删除了并且它起作用了,请求许可,我可以获得位置。 我希望这也可以帮助你们。

@cetorres终于明白了! 我做了你推荐的更改,最重要的是我还在getCurrentPosition之前调用了checkGeolocationPermissionStatus getCurrentPosition所以我的权限提示没有触发!

谢谢! :啤酒:

版本:3.0.0 ios 也不提示权限访问。

从 Xcode 中的调试来看,似乎还需要NSLocationAlwaysAndWhenInUseUsageDescription 。 (只有NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription在 Flutter 中静默失败)

同样的问题,一切都证明了这一点,但没有任何效果。 不太确定如何解决它。

非常感谢@cetorres! 我实际上针对的是 iOS 10+,但我仍然必须删除NSLocationAlwaysUsageDescription才能使其正常工作。 我的应用程序在不使用时不需要位置信息,所以这已经足够了。

疯狂的! Apple 以通常的方式批准了我的 TestFlight 应用程序...

您现在可以使用此版本进行 TestFlight 测试或将其提交到 App Store。

但也给我发了这个:

我们发现了您的应用程序最近交付的一个或多个问题,[已编辑] 1.0.0 (12)。 您的交付成功,但您可能希望在下次交付时更正以下问题:

ITMS-90683:Info.plist 中缺少用途字符串 - 您的应用程序代码引用了一个或多个访问敏感用户数据的 API。 应用程序的 Info.plist 文件应该包含一个 NSLocationAlwaysUsageDescription 键和一个面向用户的目的字符串,清楚而完整地解释你的应用程序为什么需要数据。 从 2019 年春季开始,所有提交到 App Store 的访问用户数据的应用程序都需要包含一个用途字符串。 如果您使用外部库或 SDK,它们可能会引用需要用途字符串的 API。 虽然您的应用程序可能不使用这些 API,但仍然需要一个用途字符串。 您可以联系库或 SDK 的开发人员,并要求他们发布不包含 API 的代码版本。 了解更多 (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)。

所以看起来我在这里仍然在绳索上行走。 我无法升级插件,因为我现在不想越过 AndroidX 障碍...

你们有什么建议? 只是忽略“我们发现问题”的消息?

更新:在 info.plist 中添加以下所有三个对我有用。 苹果也很高兴。

NSLocationWhenInUseUsageDescription

NSLocationAlwaysAndWhenInUseUsageDescription

感谢您的提示, @vejmartin

@kbrmimbyl你是

对于在 AndroidStudio 中而不是在 XCode 中修改过 info.plist 的任何人都感兴趣:对我来说,当我删除“NSLocationAlwaysAndWhenInUseUsageDescription”并在 Xcode 中选择相应的“隐私 - 位置始终和使用时使用说明”时,它起作用了。 出于某种原因,其他人已经像那样格式化了,但这个不是。 我遇到了上面提到的相同问题,但是 onError 它什么也没给我。 异步只是在等待,从未进行过。 然后如果你热重载,你会得到 ERROR_ALREADY_REQUESTING_PERMISSIONS,因为它仍在等待对该权限请求的输入。
针对 IOS11,在 Android 上运行良好。 现在它也可以在 IOS 上运行。

我在 IOS 设备上的 flutter web 遇到了同样的问题。
应用程序在 IOS 上不提示任何权限对话框,但它适用于 windows 和 android 设备

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

samo92 picture samo92  ·  6评论

estevez-dev picture estevez-dev  ·  6评论

long1eu picture long1eu  ·  4评论

DineshKachhot picture DineshKachhot  ·  7评论

deisold picture deisold  ·  3评论