0

worklight ios ネイティブ API を使用してジオフェンシング アプリケーションを開発しています。

私は worklight 6.1 を使用しており、ios 7.1.2 を搭載した iPhone4 でアプリケーションをテストしています。

以下は、ジオフェンスを作成するために作成したネイティブ 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];

必要な BackgroundModes も追加しましたが、まだ機能しません。

アプリを強制終了しても、これwlLocationServicesConfigurationは nil になります。

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

1 に答える 1