- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试让iPhone4监视区域并通过调用didEnterRegion或didExitRegion通知我。我无法让它工作。我在这里阅读了可能所有相关的条目,再加上网上的几篇文章....iOS 只是不调用我的 CLLocationManagerDelegate 方法。我做了什么:
我有一个简单的 AppDelegate,它还实现 didEnterRegion 和 didExitRegion 的 CLLocationManagerDelegate 方法。在这些方法中,我只需使用 UILocalNotification 来报告事件。我从 ViewController 创建一个半径为 1000 米的区域(当前位置)。
最佳答案
以下是一些需要检查的事项:
在开始监视代码中的区域之前,请调用 [CLLocationManager regionMonitoringAvailable]
和[CLLocationManager regionMonitoringEnabled]
确保该服务在用户的手机上可用并已启用。
确保您拥有位置管理员的 delegate
属性设置为您已实现的对象 locationManager:didEnterRegion:
和/或 locationManager:didExitRegion:
.
确保这些方法签名中没有任何拼写错误。一个小的大小写错误就会导致这些消息的传递失败。将它们复制/粘贴到您的代码中并确保它们匹配:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{ /* Handle enter */ }
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{ /* Handle exit */ }
确保您的委托(delegate)也实现 locationManager:monitoringDidFailForRegion:withError:
,因为它可能会告诉您服务失败的原因。
- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error
{
NSLog(@"Region monitoring failed with error: %@", [error localizedDescription]);
}
可能发生此类监控失败的原因之一是 Core Location 对允许应用监控的区域数量施加了限制。实际上,这个限制似乎是每个应用程序大约十个区域。因此,请确保使用 stopMonitoringForRegion:
删除不需要的区域。 ,并按照 Apple Location Awareness Programming Guide 的建议仅监控距离用户最近的区域。 :
You should always be judicious when specifying the set of regions to monitor. Regions are a shared system resource and the total number of regions available systemwide is limited. For this reason, Core Location limits the number of regions that may be simultaneously monitored by a single application. To work around these limits, you should consider registering only those regions in the user’s immediate vicinity. As the user’s location changes, you can remove regions that are now farther way and add regions coming up on the user’s path. If you attempt to register a region and space is unavailable, the location manager calls the
locationManager:monitoringDidFailForRegion:withError:
method of its delegate with thekCLErrorRegionMonitoringFailure
error code.
希望很明显,但请确保您调用 startMonitoringForRegion:desiredAccuracy:
设置您的委托(delegate)后。
当您初始化CLRegion
时您正在使用 initCircularRegionWithCenter:radius:identifier:
监视的对象,请确保为每个区域使用唯一的标识符。
如果您的locationManager:didEnterRegion:
和locationManager:didExitRegion:
当应用程序处于事件状态时,方法会被正确调用,但当操作系统在应用程序被终止后在后台重新启动应用程序时,方法会被正确调用,那么在这种情况下,您可能无法正确初始化位置管理器并设置其委托(delegate)。如果您在应用程序未运行时跨越注册的区域边界,操作系统将在后台启动您的应用程序,您可以使用 if ([launchOptions objectForKey:@"UIApplicationLaunchOptionsLocationKey"]]) {}
进行检测。在 application:didFinishLaunchingWithOptions:
您的应用程序委托(delegate)的方法。当您的应用程序像这样在后台启动时,可能不会加载任何 View ,因此您需要确保 application:didFinishLaunchingWithOptions:
在这种情况下,调用一些代码路径来实例化您的位置管理器对象并设置其委托(delegate)。一旦设置了位置管理器的委托(delegate)属性,任何待处理的区域监控事件都会被传递。
关于iphone - startMonitoringForRegion 从不调用 didEnterRegion/didExitRegion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152361/
我有一个需要使用 StartMonitoringForRegion 的应用程序。当我将以下代码放入应用程序 didFinishLaunchingWithOptions 中时,它会起作用。 [loc s
CLLLocationManager 中的 header 有这一行: - (void)startMonitoringForRegion:(CLRegion *)region
我一直在尝试使用 startMonitoringForRegion 一段时间,但在捕获进入/退出事件时遇到了问题。当我在模拟器上启动应用程序并移动到我指定的位置时,我得到 1 个输入事件,但输入事件再
我在 iOS 5 中遇到了 startMonitoringForRegion 方法的问题。文档说该方法采用参数“accuracy”: - (void)startMonitoringForRegion:
使用 CLLocation Manager 我想实现 startMonitoringforRegion。 locationManager:didEnterRegion: 和 locationManag
startMonitoringForRegion 方法的 Apple 文档中有以下文本: An app can register up to 20 regions at a time. In orde
我正在使用 IBeacon 构建一个简单的 ios 应用程序,我正在使用 startMonitoringForRegion 来检测信标。 [self.locationManager startMoni
我正在模拟器上测试区域监控。[CLLocationManager regionMonitoringAvailable] 和 [CLLocationManager regionMonitoringEna
在 Apple 的开发者门户中,它指出 startMonitoringForRegion:desiredAccuracy: 最终将唤醒我的应用程序(即使它被终止)并向核心位置委托(delegate)发
我尝试让iPhone4监视区域并通过调用didEnterRegion或didExitRegion通知我。我无法让它工作。我在这里阅读了可能所有相关的条目,再加上网上的几篇文章....iOS 只是不调用
目前我的接收器应用程序可以使用一个 UUID,这是我的代码: - (void)startMonitoringItem { CLBeaconRegion *beaconRegion = [sel
在我的 IOS 应用程序中,我正在实现地理围栏。在当前的实现中,我使用的代码如下: CLRegion* region3 = [[CLRegion alloc] initCircularRegion
在底部(在 AppDelegate.m 中)您可以看到我的 CLLocationManager 委托(delegate)方法,它们都没有被调用。我正在使用 GPX 文件,但即使没有进入或退出区域,也应
我遇到一个问题,如果我在区域内启动应用程序,我的应用程序将不会触发 didEnterRegion 事件。如果我在区域外启动应用程序然后进入该区域,它会触发。如果我在区域内启动应用程序,然后离开该区域,
我已经通过调用 startMonitoringForRegion 开始了区域监控。但是我发现 didStartMonitoringForRegion 被调用了两次,didEnterRegion 也被调
当我开始监控一个区域时 locationManager.startMonitoringForRegion(tGeoFence[wert][wert2]) 然后像这样尝试确定它是否已经输入: for r
从 CLLocationManager.h: /* * startMonitoringForRegion: * * Discussion: * Start monitoring
我正在初始化 CLLocationManager 的实例,如下所示: CLLocationManager *locationManager = [[CLLocationManager alloc]in
我正在尝试使用 startMonitoringForRegion 在 iOS 中为 iPhone 4 编写一个应用程序,每次位置委托(delegate)收到位置更新时都会触发本地通知。 只要手机处于唤
我正在使用 estimote 信标和区域进行一些测试。 在我开始监控一个区域时阅读文档,我将告诉我的代表一个特定的区域正在被监控,但是,didEnterRegion 和 didExitRegion 永
我是一名优秀的程序员,十分优秀!