iOS 上的 navigator.permissions.query

Posted

技术标签:

【中文标题】iOS 上的 navigator.permissions.query【英文标题】:navigator.permissions.query on iOS 【发布时间】:2019-11-17 19:17:02 【问题描述】:

我有密码

navigator.permissions.query(name:'geolocation').then(function(result) 
  if (result.state === 'granted') 
    getLocation();
   else if (result.state === 'prompt') 
    console.log('не решено');
   else
    getLocation();
  
  // Don't do anything if the permission was denied.
);

如果用户获得地理定位权限 - 加载块,如果没有 - 在块中我有一个按钮“获得地理定位权限”。它适用于 android,但 ios 不支持navigator.permissions.query。如何在 iOS 中检查未使用getCurrentPosition 页面加载的许可?

【问题讨论】:

***.com/questions/52784495/… 我看到了这个,但 Cordova 诊断插件是用于应用程序的,而不是用于 Web 的,不是吗?第二种方式 getCurrentPosition 将在页面加载后显示询问( 【参考方案1】:

您可以使用navigator.geolocation 获取一个Gelocation 对象,该对象具有getCurrentPosition() 方法

此方法用于访问位置信息,这样做时浏览器会要求用户授予权限。

getCurrentPosition 方法至少需要一个参数,该参数是一个回调函数,它将GelocationPosition 对象作为其唯一的输入参数。 这个回调函数只有在用户授予权限的情况下才会被调用,这样你就可以知道用户是否拒绝了权限。

这是一个例子:

navigator.geolocation.getCurrentPosition(
    position => 
        // this function is called only if the user grant permission so here you can handle the granted state
    , 
    error => 
        // this function is called if the user denied permission or some other errors occurs
     
);

“position”是一个GelocationPosition对象,它可以让你也知道坐标,“error”是一个GelocationPositionError,要知道发生了哪个错误,你可以使用error.message

这里有一些有用的content。

【讨论】:

以上是关于iOS 上的 navigator.permissions.query的主要内容,如果未能解决你的问题,请参考以下文章

iOS - iOS 上的以下 LAContext 错误日志是啥意思?

iOS 6 上的allowAirPlayVideo 属性

iOS 14 上的 UICollectionView 列表布局问题

iOS 14 上的 NSNumberFormatter 错误

iOS 13 上的 AVAssetReferenceRestrictions

iOS13 上的 UISearchController 崩溃