在 IOS 中请求位置权限 14 从不 returns
Request for Location Permissions in IOS 14 never returns
我在使用以下代码在 Xamarin 中请求 IOS 位置权限时遇到问题,它适用于 IOS 15 和 IOS 13,但从来没有 returns [=20] =] 14. 我发现有几个地方在谈论它并使用类似的东西,但它们是从 2020 年开始的。最近是否发生了某些变化以再次导致此问题?
while (true)
{
if (await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>() == PermissionStatus.Granted)
break;
_ = Permissions.RequestAsync<Permissions.LocationWhenInUse>();
await Task.Delay(1000);
}
Xamarin 基础版 1.7.0
Xamarin.Forms 5.0.0.2125
您不能循环等待特定结果。 iOS 将向用户显示一次请求。一旦他们回答了,那就是答案;唯一的例外是如果他们 select “允许一次” - 您将获得位置许可,但下次启动您的应用程序时,就好像您没有询问过一样,对话框将再次显示。
如果用户授予权限,则您可以使用位置。如果他们拒绝许可,那么您不能 - 您要么在没有位置的情况下继续,要么将他们引导到您的应用的设备设置,他们可以在其中授予位置许可。
获取权限应答是异步的;用户 select 需要一些时间才能做出响应。 await
会为您处理。
var permission = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>()
if (permission == PermissionStatus.Granted) {
// Great - you can use location
} else {
// No location permission - You can't use it
// You can check the value of permission to see if location was denied or is unavailable
}
我在使用以下代码在 Xamarin 中请求 IOS 位置权限时遇到问题,它适用于 IOS 15 和 IOS 13,但从来没有 returns [=20] =] 14. 我发现有几个地方在谈论它并使用类似的东西,但它们是从 2020 年开始的。最近是否发生了某些变化以再次导致此问题?
while (true)
{
if (await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>() == PermissionStatus.Granted)
break;
_ = Permissions.RequestAsync<Permissions.LocationWhenInUse>();
await Task.Delay(1000);
}
Xamarin 基础版 1.7.0
Xamarin.Forms 5.0.0.2125
您不能循环等待特定结果。 iOS 将向用户显示一次请求。一旦他们回答了,那就是答案;唯一的例外是如果他们 select “允许一次” - 您将获得位置许可,但下次启动您的应用程序时,就好像您没有询问过一样,对话框将再次显示。
如果用户授予权限,则您可以使用位置。如果他们拒绝许可,那么您不能 - 您要么在没有位置的情况下继续,要么将他们引导到您的应用的设备设置,他们可以在其中授予位置许可。
获取权限应答是异步的;用户 select 需要一些时间才能做出响应。 await
会为您处理。
var permission = await Permissions.CheckStatusAsync<Permissions.LocationWhenInUse>()
if (permission == PermissionStatus.Granted) {
// Great - you can use location
} else {
// No location permission - You can't use it
// You can check the value of permission to see if location was denied or is unavailable
}