iOS 模拟器不要求位置权限。 似乎设备只是跳过或“挂起”。 当我尝试手动获取geolocator.getCurrentPosition 时(通过按下按钮)它返回null 。 对于 Android,一切都按预期工作。 我已经使用geolocator.checkGeolocationPermissionStatus()检查了位置权限,它是
GeolocationStatus.unknown 。
iOS 模拟器应该请求用户对位置服务的权限。
版本: 2.1.1
平台:
我注意到的是,当应用程序首次安装并访问定位服务时,系统会弹出一个对话框请求许可,同时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
。 (只有NSLocationAlwaysUsageDescription
和NSLocationWhenInUseUsageDescription
在 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 设备
最有用的评论
@dstuff @kika @JStuve @StephanCassel ,
我修好了它! 我在 Info.plist 上使用了这个权限 NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription。 但是该应用程序设置为针对 iOS 8,Flutter 默认。 但是 NSLocationAlwaysUsageDescription 只能与 iOS 10+ 一起使用。 这弄乱了 iOS 应用程序上的权限提示。 我删除了并且它起作用了,请求许可,我可以获得位置。 我希望这也可以帮助你们。