2011-09-16 17 views
1

私は1つの重大な問題を持っています。 アプリがバックグラウンドモードでもフォアグラウンドモードでも、現在の位置をサーバーに送信する必要があるiphoneアプリがあります。 私はバックグラウンドモードと同様のInfo.plistパラメータにプロパティを設定行わ - >位置の設定のための場所と他のコードが通常アプリケーションをバックグラウンドモードで永遠に実行するには?

 
- (CLLocationManager *)loc_mngr { 

    if (loc_mngr != nil) { 
     return loc_mngr; 
    } 


    loc_mngr = [[CLLocationManager alloc] init]; 
    loc_mngr.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; 
    loc_mngr.delegate = self; 
    return loc_mngr; 

} 

loc_mngrはCLLocationManagerの目的です。 デリゲートメソッドの実装が完了しました。 それは私のために働くが、問題は、私のアプリがバックグラウンドにあるときにハンドヘルドロケーションサービスを有効にする方法です。 どうすれば対応できますか?ありがとうございました。

+0

申し訳ありませんが、私は面であなたのコメントを理解しませんあなたが意味することの –

答えて

0

CLLocationManagerDelegateを作成して、アプリケーションにコールバックを受け取る必要があります。実行する場所項目を設定する必要があります。アプリがバックグラウンドに移行するときには、デリゲートに場所の更新を聞かせる必要があります。これは、region-didEnterRegionまたは-didExitRegionを監視することによって行うことができます。または、標準の位置監視からの簡単な-didUpdateToLocation。

詳細については、Apple's Location Awareness Programming Guideを参照してください。がんばろう。

0

「永遠」という言葉は概念的に間違っています。アップルはいつでもアプリを殺す権利を保持しています。あなたは論理を再考する必要があります。

いくつかの注意:

  • 常に上のローカライズ(標準ローカリゼーション)を維持するために間違っている:それは使用することをお勧めし

    非常にquicky
  • をバッテリーを消費します:

    [locationManager startMonitoringSignificantLocationChanges] ;

    この方法での消費電力は(...精が低くても)はるかに小さい

  • 使用領域:彼らはあなたのアプリケーションが終了/殺された場合であっても従っています。 (私たちはio5でそれをテストして動作します)
2

これを行うには、次の方法があります。

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(0.0, 0.0); 
CLRegion *region = [[CLRegion alloc] initWithCircularRegionWithCenter:coord radius:500 identifier:@"Some Identifier"]; 

そして、フレームワークと地域を登録します。

[locationManager startMonitoringForRegion:region]; 

デリゲートプロトコルは、地域のために使用するための3つのメソッドを定義:

– locationManager:didEnterRegion: 
– locationManager:didExitRegion: 
– locationManager:monitoringDidFailForRegion:withError: 
関連する問題