iOS 上的 Cordova 地理围栏和 iBeacon 插件冲突
Posted
技术标签:
【中文标题】iOS 上的 Cordova 地理围栏和 iBeacon 插件冲突【英文标题】:Cordova Geofencing and iBeacon plugin conflict on iOS 【发布时间】:2015-11-23 23:27:03 【问题描述】:我有一个在 Cordova 中构建的应用程序,运行 iBeacon 插件 (https://github.com/petermetz/cordova-plugin-ibeacon)。
我也在尝试让地理围栏工作(使用这个插件:https://github.com/cowbell/cordova-plugin-geofence)
在 ios (9.1) 中,如果我使用地理围栏或 iBeacons,该应用程序将正常工作,但如果我尝试同时使用这两者,当 iBeacon 插件开始监视某个区域时,它会崩溃。日志显示:
Process 736 stopped
* thread #1: tid = 0x8d0cf, 0x391ecc84 libsystem_kernel.dylib`__pthread_kill + 8, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x391ecc84 libsystem_kernel.dylib`__pthread_kill + 8
libsystem_kernel.dylib`__pthread_kill:
-> 0x391ecc84 <+8>: blo 0x391ecc9c ; <+32>
0x391ecc88 <+12>: ldr r12, [pc, #0x4] ; <+24>
0x391ecc8c <+16>: ldr r12, [pc, r12]
0x391ecc90 <+20>: b 0x391ecc98 ; <+28>
我什至不知道从哪里开始解决这个问题。有什么想法吗?
谢谢!
更新:
当我在 xCode 中运行而不是从命令行安装时,错误的日志输出显示如下:
无法将“CLBeaconRegion”(0x3bfc3fc4) 类型的值转换为“CLCircularRegion”(0x3bfc3f9c)。
这发生在 GeoFence 插件 (GeofencePlugin.swif) 的这个方法中:
func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion)
let lat = (region as! CLCircularRegion).center.latitude
let lng = (region as! CLCircularRegion).center.longitude
let radius = (region as! CLCircularRegion).radius
log("Starting monitoring for region \(region) lat \(lat) lng \(lng) of radius \(radius)")
【问题讨论】:
嗨@Edward,我也有同样的问题。我想知道您是否找到了解决方案。谢谢! 【参考方案1】:正如标题中提到的,这是由于两个库之间的冲突。我已经为 this issue with 打开了一个 pull request 修复程序,但该存储库上没有太多活动,
您也可以my fork for this plugin 来避免这个问题。
【讨论】:
以上是关于iOS 上的 Cordova 地理围栏和 iBeacon 插件冲突的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap (Cordova 2.9.0) iOS 上的地理定位