Leaflet-locatecontrol 插件:ios 应用程序在运动和方向弹出权限上崩溃

Posted

技术标签:

【中文标题】Leaflet-locatecontrol 插件:ios 应用程序在运动和方向弹出权限上崩溃【英文标题】:Leaflet-locatecontrol plugin: ios app crash on motion and orientation popup permission 【发布时间】:2021-08-24 11:49:03 【问题描述】:

我正在使用这个 Leaflet 插件来允许用户在地图上使用地理定位。它使用浏览器 API,例如运动和地理定位。在 android 应用程序版本上,它运行良好,我的代码在使用 Capacitor 设置插件之前检查并需要地理定位权限。在 ios 应用程序版本上,该应用程序像以前一样使用 Capacitor 进行检查,它需要显示 popup 的运动和方向访问权限。然后应用程序崩溃并显示此异常:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Completion handler passed to -[CAPWebViewDelegationHandler webView:runjavascriptAlertPanelWithMessage:initiatedByFrame:completionHandler:] was not called' terminating with uncaught exception of type NSException

我尝试在 Capacitor XCode Pods 文件夹和 Capacitor Github 上查找 CAPWebViewDelegationHandler,但没有任何显示。

我还尝试使用原生 API 请求运动和方向许可,例如: DeviceMotionEvent.requestPermission() 它启动了相同的弹出窗口,但这次没有发现崩溃。而是显示地理定位错误,这表明原点没有地理定位访问权限。

我在 XCode 上的应用信息如下所示:App info,我在其中添加了用于运动和位置描述的隐私密钥。

这是我的Info.plist 文件:Info.plist

我正在使用:

电容3.0.0 离子框架 5 传单 1.7.1 Leaflet.locatecontrol 0.73.0

我是使用 ionic 进行 ios 开发的新手,所以如果有人能给我一些建议,那就太好了。

【问题讨论】:

【参考方案1】:

我终于通过使用capacitor geolocation 自定义插件解决了这个问题。你可以找到github repohere。

【讨论】:

以上是关于Leaflet-locatecontrol 插件:ios 应用程序在运动和方向弹出权限上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Android 插件化Hook 插件化框架 ( hook 插件化原理 | 插件包管理 )

Android 插件化“ 插桩式 “ 插件化框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 )

Android 插件化Hook 插件化框架 ( 加载插件包资源 )

Android 插件化VirtualApp 安装并启动资源中自带的 APK 插件 ( 添加依赖库 | 准备插件 APK | 启动插件引擎 | 拷贝 APK 插件 | 安装插件 | 启动插件 )(代码片

Android 插件化VirtualApp 安装并启动资源中自带的 APK 插件 ( 添加依赖库 | 准备插件 APK | 启动插件引擎 | 拷贝 APK 插件 | 安装插件 | 启动插件 )(代码片

Android 插件化基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )