Worklight iOS Geofence Native API 在几分钟后停止在后台工作

Posted

技术标签:

【中文标题】Worklight iOS Geofence Native API 在几分钟后停止在后台工作【英文标题】:Worklight iOS Geofence Native API stops working in background after few mins 【发布时间】:2014-07-31 15:38:50 【问题描述】:

我正在使用 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 为零。

WLLocationServicesConfiguration *wlLocationServicesConfiguration = [[[WLClient  sharedInstance] getWLDevice] getLocationServicesConfig];

我还添加了必要的 BackgroundModes,但它仍然不起作用。

即使我杀死了该应用程序,我也会得到这个 wlLocationServicesConfiguration 为零。

WLLocationServicesConfiguration *wlLocationServicesConfiguration = [[[WLClient  sharedInstance] getWLDevice] getLocationServicesConfig];

【问题讨论】:

使用提供的本机示例项目,我们无法重新创建您遇到的消失的位置图标。 1)你能提供一个工作样本来调试吗? 2) 如果您已删除所有触发器,则可能会发生这种情况。在这种情况下,定位服务将停止,解释结果为 nil。 等待收到您关于此问题的消息。 不@IdanAdar,当应用程序移至后台时,我们不会删除任何触发器。示例的大部分代码已经在这里共享,如果我的客户允许,我仍会尝试为您提供工作示例。 【参考方案1】:

我相信以下问题的答案可以解释它:MobileFirst 6.3 - Enabling location trigger in Background in Hybrid Applications for iOS environment

卡梅尔的回答如下:

首先看这里,了解如何设置运行位置服务的权限 的背景: Background Location Services not working in iOS 7

Ios 有限制。在跑了几分钟后 背景没有任何位置更新应用程序被暂停并且所有 一旦用户将应用程序带回,将收到位置更新 生活。

【讨论】:

以上是关于Worklight iOS Geofence Native API 在几分钟后停止在后台工作的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 6.0.0.1 和 iOS 7 键盘

地理围栏 - 触发“GEOFENCE_NOT_AVAILABLE”的问题

Worklight - FWLST1040E:android 构建失败:java.io.FileNotFoundException

应用程序在 iOS7 上使用 Worklight 变得可滚动

IBM Worklight:iOS 推送通知长度限制

Worklight - require.js 不会在 iPad2 iOS 设备上加载模块