2011-06-21 21 views
11

私のアプリでリージョンモニタリングを使用していますが、回答が見つからないという質問に直面しました。バックグラウンドモードでのリージョンモニタリングはどのように機能しますか?位置認識PGによるバックグラウンドモードでのiOS領域の監視

境界領域を横切る たびにユーザの現在位置は、システム は、アプリケーションに適した領域イベント を生成します。 アプリケーションが既に実行されている場合、これらの イベントは、現在のロケーションマネージャオブジェクトの の代理人に直接移動します。 アプリケーションが実行されていない場合、 システムは バックグラウンドでシステムを起動し、応答します。今

、この質問は:私のアプリはサスペンドモードになって、領域が入力されているとトリガが配信されるべきで、このイベントには、デリゲートのに「直接」送信されますん:

locationManager:didEnterRegion: 

??アプリがバックグラウンドモードの場合も同じ質問です。つまり、このイベントを受信するためにサスペンドモードとバックグラウンドモードで考慮する必要があるコードはありますか?またはiOSが最初にアプリケーションを起動し、BGコードを必要とせずに直接デリゲートにイベントを送信しますか?

+1

を取得するには、この質問は今まであなたのために解決したのですか?私はあなたのために答えがある。 –

+0

私もこれについていくつかの助けが好きです!ありがとう! – Mathieu

答えて

0

私が知る限り、地域の監視はiPhone4でしか動作せず、通信塔を変更するデバイスに基づいています。この方法では、標準的なバックグラウンドの場所の更新よりも少ないバッテリを使用します。 適切なバックグラウンドモードが有効になっていることを確認してください。そのデリゲートを実装している間は、準備ができているはずです。

+0

mmmmmm ....それは別の質問につながり、愚かに聞こえるかもしれませんが、Region Monitoringデバイスはinfo.plistで指定する必要がありますか?この場合、私のアプリは3Gにインストールされませんが、この機能は必須ではありません(ロケーションベースのアプリではありません)。 –

+0

はい、まだ位置追跡を有効にする必要があります。 –

+0

私はあなたが正しいと思います。私は何度も挑戦しましたが、私がその地域に入ったことは決して知らされませんでした。 info.plistの変更を検討します。しかし、これは悲しいことに私の販売を下げます!ありがとうございました。 –

1

リージョンの監視バックグラウンドにいる場合は、監視対象領域を入力するときにアプリケーションを再起動します。

ただし、アプリの再起動後に再度ロケーションマネージャを設定する必要があります。このような

何か -

if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]) 
    { 

     NSLog(@"Relaunched due to location update"); 

     NSLog(@"app woke up times ---- %d",ForTest); 

     NSLog(@"Starting the location manager"); 
     self.locmanager = [[CLLocationManager alloc] init]; 
     [self.locmanager startMonitoringForRegion:(CLRegion)*region]; 
     // self.locmanager.pausesLocationUpdatesAutomatically = YES ; 
    } 
-1

enter image description here

が、その中にバックグラウンドモード を有効に場所の更新を有効にして、背景が

+0

どちらも必須ではありません。 –