- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在底部(在 AppDelegate.m 中)您可以看到我的 CLLocationManager
委托(delegate)方法,它们都没有被调用。我正在使用 GPX 文件,但即使没有进入或退出区域,也应该调用委托(delegate)方法 didStartMonitoringForRegion
。
SomeOtherClass.m
AppDelegate appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.locationManager startMonitoringForRegion:regionToMonitor desiredAccuracy:kCLLocationAccuracyNearestTenMeters];
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate,CLLocationManagerDelegate>
@property (nonatomic, retain) CLLocationManager *locationManager;
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (locationManager==nil) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
}
return YES;
}
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"Did enter region");
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
NSLog(@"Did exit region");
}
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"Fail");
NSLog(@"%@", [error description]);
}
-(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
NSLog(@"Did start monitoring for region: %@", region.identifier);
}
最佳答案
首先你应该添加下面的Location manager委托(delegate)方法,看看是否由于某种原因区域监控注册失败:
- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error {
NSLog(@"%@",error);
}
其次,区域监控是系统共享资源。该文档指出,它允许您监控有限数量的区域(不幸的是没有指定任何数量),并提到如果另一个应用程序注册了额外的区域来监控,您的一些应用程序监控区域可能会被丢弃。
第三,区域监测没有使用任何GPS技术。它仅使用您的网络运营商的蜂窝天线,每当您更换手机信号塔时,它都会触发一个系统事件,循环遍历所有受监控的区域,并查看某个区域是否在您现在所在的新区域内。
这意味着您应该期望服务的准确性较低,因此您应该增加为区域设置的半径。
最后,如果您的应用程序完全终止且未暂停,那么您的应用程序将在应用程序委托(delegate)中接收:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
launchOptions
字典中的 UIApplicationLaunchOptionsLocationKey
。然后,您有责任在您的应用程序事件状态的有限时间内重新初始化您的位置管理器,获取当前位置并向用户发送本地推送通知。
因为应用在那个阶段不会正常运行,而是处于受限的后台模式状态。
此外,如果您想在模拟器中测试该应用程序,您应该将 track.gpx 文件添加到您的项目并将模拟器设置为跟踪模式。确保您放置在模拟器中的 2 个位置不是很远(因为完成跟踪可能需要很长时间)并将它们设置在一条路径中,它将进入您的监控区域。然后看看你是否收到任何回调。不要用你的设备测试它,因为你需要实际走几个街区才能看到与设备的任何真实互动:-)
关于ios - 为什么我的 CLLocationManager 没有响应 startMonitoringForRegion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943306/
我有一个需要使用 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 永
我是一名优秀的程序员,十分优秀!