如何在应用程序启动时打开设备的位置?

Posted

技术标签:

【中文标题】如何在应用程序启动时打开设备的位置?【英文标题】:How to turn on the location of the device while the application is starting? 【发布时间】:2018-12-05 10:58:36 【问题描述】:

我的 phonegap 应用程序的 config.xml 文件如下。

<description>
  Online Abonelik, Borç Sorgulama, Fatura Ödeme, Tüketim Sorgulama v.b. pek çok işlem
</description>

<author href="http://www.infopark.com.tr" email="bilgi@infopark.com.tr">
  Infopark
</author>

<preference name="permission" value="none" />

<plugin name="cordova-plugin-geolocation" spec="2.4.2" source="npm" />

<feature name="http://api.phonegap.com/1.0/geolocation" />


<preference name="orientation" value="default" />
<preference name="StatusBarOverlaysWebView" value="true" />
<preference name="StatusBarBackgroundColor" value="#000000" />
<preference name="StatusBarStyle" value="lightcontent" />
<preference name="detect-data-types" value="true" />
<preference name="android-windowSoftInputMode" value="adjustResize" />



<feature name="StatusBar">
  <param name="ios-package" value="CDVStatusBar" onload="true" />
</feature>


<preference name="phonegap-version" value="cli-6.5.0" />

<icon src="uedasicon.png" />

<preference name="SplashScreenDelay" value="5000" />

<gap:config-file platform="ios" parent="CFBundleShortVersionString">
  <string>107</string>
</gap:config-file>


<access origin="*" />


<gap:plugin name="cordova-plugin-whitelist" version="1.1.0" source="npm" />
<gap:plugin name="cordova-plugin-splashscreen" source="npm" />

<plugin name="cordova-plugin-whitelist" version="1" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<allow-navigation href="https://testoim.com.tr" />
<platform name="android">
  <allow-intent href="market:*" />
</platform>
<platform name="ios">
  <allow-intent href="itms:*" />
  <allow-intent href="itms-apps:*" />
</platform>

</widget>

【问题讨论】:

How can I turn on the location of the device while the application is starting? 不清楚你的意思。您的意思是要确保在您的应用首次启动时启用设备位置设置(Android 上的定位模式/iOS 上的定位服务)? 是的,如果位置关闭,则必须发出警报并打开 【参考方案1】:

您可以使用cordova-diagnostic-plugin 来检查当前是否使用isLocationEnabled() 启用了位置设置,并且您可以使用registerLocationStateChangeHandler() 来监控位置设置的实时变化。

在 Android 或 iOS 上都无法在用户明确同意的情况下以编程方式打开设备位置设置。

但是,在 Android 上,您可以使用 cordova-plugin-request-location-accuracy 以编程方式请求开启定位模式或提高准确度级别。 这会向用户显示一个系统对话框“提高定位精度?” - 必须按“是”才能应用它。

在 iOS 上,无法以编程方式打开定位服务或直接在“设置”应用中打开定位服务页面。最好的办法(使用cordova-plugin-request-location-accuracy)是显示一个原生 iOS 系统对话框,让用户可以选择在设置应用程序中直接打开隐私页面,其中包含打开定位服务的开关。

【讨论】:

以上是关于如何在应用程序启动时打开设备的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在棉花糖中首次启动应用程序时获取位置访问权限

在android中重新启动应用程序时如何重新连接chromecast设备

如何在无需打开应用的情况下后台启动 Flutter 服务?

如何找到安装程序的注册表文件

Android如何打开app内外齿轮vr设备

iOS 设备重启后继续位置更新