- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我调试了一整天,delegate 确实被调用了。
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
这是我调用监视器的标准代码。使用 CoreLocation.framework。
[locationManager startMonitoringForRegion:geofence];
并将这些注册到我的 plist 中。
<key>NSLocationAlwaysUsageDescription</key>
<string>Lugang</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Lugang</string>
启用后台应用刷新,但我没有在其中看到我的应用。
我曾尝试在 LocationManager 实例中打印我的 monitoredRegions 并且有我的监控区域。
NSLog(@"%@" ,locationManager.monitoredRegions);
并且 regionMonitoringAvailable 为真。
NSLog(@"%d" , [CLLocationManager regionMonitoringAvailable] );
在 iOS 8 中,我请求了 requestAlwaysAuthorization
[locationManager requestAlwaysAuthorization];
我试过三种状态,应用在前台,应用在后台,应用未激活。这些州都没有打电话。
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
根本没有收到任何错误。
我试过了
[locationManager requestStateForRegion:geofence];
工作正常。
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
确实在我的 requestStateForRegion 中触发了。
我不知道是什么让 didEnterRegion 没有被调用,我知道在 iOS 7 和更高版本的设备中工作,但我现在没有这样的设备来作证。
也许 requestStateForRegion 可以满足我的要求,但我仍然无法弄清楚 DidEnterRegion 是如何工作的。这些都不会触发任何错误消息来告诉开发人员进行调试。
最佳答案
我遇到了同样的问题,以下是我遵循并获得成功的步骤。
在 locationmanager
中添加您的地理围栏数组数据之后。使用下面的代码。
for (CLRegion *monitored in [locationManagerGeofence monitoredRegions])
{
[locationManagerGeofence stopMonitoringForRegion:monitored];
}
self.geofencesArray = [NSMutableArray arrayWithArray:[self buildGeofenceData]];
if([CLLocationManager regionMonitoringAvailable])
{
for (CLRegion *region in self.geofencesArray)
{
[locationManagerGeofence startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyBest];
}
}
else
{
[BB_Global displayAlertWithTitle:@"" message:@"This app requires region monitoring features which are unavailable on this device."];
}
与以下代表一起检查您对区域的开始监控。
-(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
{
NSLog(@"Started monitoring %@ region", region.identifier);
}
将这两个委托(delegate)方法用于地理围栏。 1) DidEnter
2)DidExit
DidEnter
和 DidExit
方法中实现了本地通知,因此无需调试。一旦你的方法被调用,本地通知就会被触发。关于ios - 地理围栏 didEnterRegion,didExitRegion 函数不在 iphone 5S iOS8.1 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27521220/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!