gpt4 book ai didi

android - 添加 cordova.js 可防止地理定位(或任何其他)回调

转载 作者:行者123 更新时间:2023-11-30 04:58:55 32 4
gpt4 key购买 nike

我创建了一个 Ionic 项目来将现有的 AngularJS 网络应用程序转换为混合应用程序。完美运行。

我添加了 cordova-plugin-geolocation让地理定位工作,但我看到了 cordova.plugins.diagnostic有更好的支持,所以我补充说。然而,为了让它工作,我必须添加到 index.html <script src="cordova.js"></script>以前没有。

因此,我现在尝试在应用加载时获取位置授权,如下所示:

$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins) {
console.log('Cordova plugins ready');
if (window.cordova.plugins.diagnostic) {
console.log('Diagnostic plugin ready');
window.cordova.plugins.diagnostic.getLocationAuthorizationStatus(evaluateGeolocationAuthorizationStatus, onGeolocationAuthorizationError);
}
}
});

在控制台中查看时,我确实看到了 Diagnostic plugin ready ,但没有任何反应。当我在 chrome 控制台中运行时 window.cordova.plugins.diagnostic.getLocationAuthorizationStatus(function(status) {console.log('status: ' + status)}, function(error) {console.log (error)});我得到 undefined .

当我尝试经典时 window.navigator.geolocation.getCurrentPosition(onSuccess, onError, options)我也得到 undefined .

当我删除 <script src="cordova.js"></script> 时我无权访问 window.cordova , 但现在 window.navigator.geolocation.getCurrentPosition 的回调再次工作。

所以,简而言之:添加 <script src="cordova.js"></script>阻止这些回调。

我已经删除并重新添加了 Android 平台,但一切都保持不变。谁能帮忙?

ionic 5.2.2
cordova 9.0.0
cordova-android 8.1.0

我的 package.json 文件

{
"name": "x",
"version": "0.0.1",
"description": "x",
"devDependencies": {
"@ionic/v1-toolkit": "^1.0.0",
"gulp": "^3.5.6",
"gulp-clean-css": "^3.7.0",
"gulp-exec": "^4.0.0",
"gulp-rename": "^1.2.0",
"gulp-sass": "^3.1.0",
"gulp-xml-transformer": "^3.0.0"
},
"dependencies": {
"cordova-android": "^8.1.0",
"cordova-plugin-geolocation": "^4.0.2",
"cordova-plugin-ionic-keyboard": "^2.2.0",
"cordova-plugin-ionic-webview": "^4.1.2",
"cordova-plugin-splashscreen": "^5.0.3",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-whitelist": "^1.3.4",
"cordova.plugins.diagnostic": "^5.0.1"
},
"cordova": {
"plugins": {
"cordova-plugin-ionic-webview": {
"ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
},
"cordova-plugin-splashscreen": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-whitelist": {},
"cordova-plugin-ionic-keyboard": {},
"cordova-plugin-geolocation": {},
"cordova.plugins.diagnostic": {}
},
"platforms": [
"android"
]
}
}

最佳答案

我遇到了同样的问题,对我来说,很难找到原因。基本上 .js 插件无法与主机 android 插件通信,我能找到的唯一错误/警告消息是一个神秘的 Ignoring {action} from previous page load .但最终,就我而言,根本原因是我更改了 Hostname。的默认值来自 localhost到我的自定义域(例如 fancy-app.com )。和 according to the ionic webview plugin documentation :

Hostname

Default value is localhost.

Example ionic://app on iOS, http://app on Android.

If you change it, you'll need to add a new allow-navigation entry in the config.xml for the configured url (i.e if Hostname is set to app). This is only needed for the Android url when using http://, https:// or a custom scheme. All ionic:// urls are whitelisted by the plugin.

这也解释了为什么该插件可以在 iOS 上运行(默认情况下,该方案是 ionic://,但在 Adroid 上不是)。一旦我添加 <allow-navigation href="http://app/*"/>在我的 config.xml归档它工作正常。

关于android - 添加 cordova.js 可防止地理定位(或任何其他)回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588963/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com