【问题标题】:Location Permission on iOS app built with Capacitor使用 Capacitor 构建的 iOS 应用程序的位置权限
【发布时间】:2021-09-16 17:28:52
【问题描述】:

我正在为需要地理定位权限的 iOS 和 Android 构建一个移动应用程序。使用 Capacitor 来构建它,它在 Android 中运行良好。但是在 iOS 上,我的 Mapbox 地图中的“用户中心”按钮不起作用,当您尝试单击它时会被划掉并禁用。网上有很多答案,例如this one,人们解释说您必须向 Info.plist 文件添加三个权限:

  • NSLocationAlwaysUsageDescription
  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysAndWhenInUseUsageDescription

我只添加了第二个,因为我只需要在使用应用程序时访问地理位置。但是仍然无法访问位置服务。我也尝试添加几个插件,但这也没有解决问题。以下是 package.json 文件中相关项目的列表:

  "dependencies": {
    "@capacitor/core": "^3.0.2",
    "@capacitor/ios": "^3.0.2",
    "@ionic-native/location-accuracy": "^5.34.0",
    "@mapbox/mapbox-gl-geocoder": "^4.7.1",
    "@mapbox/mapbox-sdk": "^0.13.0",
    "cordova-plugin-request-location-accuracy": "^2.3.0",
    "mapbox-gl": "^2.3.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2"
  },
  "devDependencies": {
    "@capacitor/app": "^1.0.2",
    "@capacitor/cli": "^3.0.2",
    "@capacitor/geolocation": "^1.0.2",
    "capacitor-resources": "^2.0.5"
  }

对于正常运行的android构建,我不必导入任何插件或任何东西,我只需添加权限即可。如何让用户使用 Capacitor 将地图以他们在 ios 上的位置为中心?谢谢。

【问题讨论】:

    标签: ios permissions geolocation capacitor


    【解决方案1】:

    问题是 Android 和 iOS 在我的用例中表现得非常不同。在 Android 版本中,提供位置权限就足够了。有了这些权限,作为我应用程序重要组成部分的 mapbox 地图就能够像在 Web 构建中通常那样使用用户的位置。不需要插件,所以基本上是理想的场景。

    在 iOS 上,mapbox 地图仍然无法直接访问用户的位置。因此,当您单击目标符号按钮以您的位置为中心时,即使具有权限,mapbox 地图也无法完成请求。但是您可以做的是使用@capacitor/geolocation 插件来获取坐标(和其他gps 数据),然后将地图设置为您传递给它的特定坐标。

    我不确定为什么 Android 和 iOS 在这种情况下表现如此不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 2019-12-31
      相关资源
      最近更新 更多