0

ibeacon API を使用して、バックグラウンドでビーコンを監視するアプリを開発しました。コアの場所と bluetooth を使用するため、機能から場所、Bluetooth 構成を有効にしました。したがって、アプリを実行した後、バックグラウンドで範囲が広がりますが、アプリが終了するまでの5〜10分後、アプリを起動すると再びスプラッシュとログインページが表示されるため、グーグルの後、アプリがバックグラウンドで実行されていることを知りました延長時間。

アプリの終了を克服するために、メソッドで以下のコードを使用し、applicationDidEnterBackground でそのメソッドを呼び出しています。

-(void)startBackgroundTask
 {
if(bgTask != UIBackgroundTaskInvalid)
    {
     [[UIApplication sharedApplication] endBackgroundTask:bgTask];
   bgTask = UIBackgroundTaskInvalid;
      }
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{


   [self endBackgroundUpdateTask];

  NSLog(@"your time is over");
    //you can call start once again to get more time
    }];
  }

 -(void) endBackgroundUpdateTask
{
[[UIApplication sharedApplication] endBackgroundTask: bgTask];
bgTask= UIBackgroundTaskInvalid;
[[NSNotificationCenter defaultCenter]
 postNotificationName:@"TimerOutStartMonitering"   object:nil];

}

上記のコードを使用してデバッグした後、UIBackgroundTaskInvalid. 両方のタスクを達成するにはどうすればよいですか 1) バックグラウンド時間が終了したら、アプリを終了しないでください。2) ビーコンの測距が止まらない。

出来ますか?私を助けてください。

4

1 に答える 1

1

残念ながら、これは不可能です。このようなバックグラウンド タスクを無期限に実行することはできません。このメカニズムは、終了前の短期間のアプリのクリーンアップのみを目的としています。ここを参照してください。

バックグラウンド タスクを実行するアプリの実行時間は限られています。(backgroundTimeRemaining プロパティを使用して、利用可能な時間を確認できます。)

このため、iBeacon のレンジングはバックグラウンドで数秒に制限されています。IBeacon モニタリングを使用してアプリを再起動し、ビーコンの検出時に再び範囲を広げることができますが、ユーザーがアプリをフォアグラウンドに移動しない限り、わずかな範囲の時間しか取得できません。

于 2014-06-25T10:43:18.710 に答える