Leaflet-locatecontrol 插件:ios 应用在运动和方向弹出权限时崩溃
Leaflet-locatecontrol plugin: ios app crash on motion and orientation popup permission
我正在使用这个 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()
它启动了相同的弹出窗口,但这次没有发现崩溃。而是显示地理定位错误,表示 origin 没有地理定位访问权限。
我在 XCode 上的应用信息如下所示:App info,我在其中添加了用于运动和位置描述的隐私密钥。
这是我的 Info.plist
文件:Info.plist
我正在使用:
- 电容器 3.0.0
- 离子框架 5
- 传单 1.7.1
- Leaflet.locatecontrol 0.73.0
我是 ios 使用 ionic 进行开发的新手,所以如果有人能给我一些建议,那就太好了。
我终于通过自定义插件 capacitor geolocation. You can find the github repo here 解决了这个问题。
我正在使用这个 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()
它启动了相同的弹出窗口,但这次没有发现崩溃。而是显示地理定位错误,表示 origin 没有地理定位访问权限。
我在 XCode 上的应用信息如下所示:App info,我在其中添加了用于运动和位置描述的隐私密钥。
这是我的 Info.plist
文件:Info.plist
我正在使用:
- 电容器 3.0.0
- 离子框架 5
- 传单 1.7.1
- Leaflet.locatecontrol 0.73.0
我是 ios 使用 ionic 进行开发的新手,所以如果有人能给我一些建议,那就太好了。
我终于通过自定义插件 capacitor geolocation. You can find the github repo here 解决了这个问题。