我正在使用worklight ios原生api开发地理围栏应用程序。
我正在使用worklight 6.1和测试应用程序在我的iPhone4与ios 7.1.2。
下面是我写的原生ios代码来创建地理围栏。
WLGeoAcquisitionPolicy* geoPolicy = [WLGeoAcquisitionPolicy getLiveTrackingProfile];
id<WLDevice> wlDevice = [[WLClient sharedInstance] getWLDevice];
// now, set-up configuration for ongoing acquisition
WLLocationServicesConfiguration* config = [[WLLocationServicesConfiguration alloc] init];
// 1. Acquisition Policy (same one that is used for the one-time acquisition)
WLAcquisitionPolicy* policy = [[WLAcquisitionPolicy alloc] init];
[policy setGeoPolicy: geoPolicy];
[config setPolicy:policy];
WLTriggersConfiguration* triggers = [[WLTriggersConfiguration alloc] init];
WLGeoEnterTrigger *wlTypeAEnterRegionTrigger = [[WLGeoEnterTrigger alloc] init];
[wlTypeAEnterRegionTrigger setArea:[[WLCircle alloc] initWithCenter:[[WLCoordinate alloc] initWithLatitude:19.5687f longitude:72.8748f] radius:500.0f]];
[wlTypeAEnterRegionTrigger setConfidenceLevel:HIGH];
[wlTypeAEnterRegionTrigger setCallback:[WLCallbackFactory createTriggerCallback:^(id<WLDeviceContext> deviceContext) {
@try
{
[[triggers getGeoTriggers] removeObjectForKey:"Offer1"];
[self showLocationNotificationWithOfferID:"Offer1" andDescription:@"offer description"];
}
@catch (NSException *exception)
{
NSLog(@"Error Occured in LBSManager::enterTriggerCallBack : %@",[exception description]);
}
}]];
[[triggers getGeoTriggers] setObject:wlTypeAEnterRegionTrigger forKey:"Offer1"];
[config setTriggers:triggers];
[wlDevice startAcquisition:config];
创建WLGeoEnterTrigger
后,位置服务图标出现在状态栏中,之后我将应用程序放在后台,几分钟后位置服务图标消失。
当我把应用程序放在前台,我得到这个wlLocationServicesConfiguration
为nil。
WLLocationServicesConfiguration *wlLocationServicesConfiguration = [[[WLClient sharedInstance] getWLDevice] getLocationServicesConfig];
我还添加了必要的背景模式,但它仍然不起作用。
即使我杀死应用程序,我得到这个wlLocationServicesConfiguration
为nil。
WLLocationServicesConfiguration *wlLocationServicesConfiguration = [[[WLClient sharedInstance] getWLDevice] getLocationServicesConfig];
我相信以下问题的答案可以解释它:MobileFirst 6.3 -在iOS环境下的混合应用程序中启用后台位置触发器
Carmel的回答如下:
首先查看如何设置权限以运行位置服务背景:后台定位服务在iOS 7中无法工作
Ios存在局限性。跑了几分钟后后台没有任何位置更新应用程序得到暂停和所有位置更新将在用户将应用程序带回到生活。