0

アプリケーションがバックグラウンドであっても、xx分ごとにユーザーの場所をリモートサーバーに更新するアプリケーションを作成したい次のコードを試しました

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    i=0;
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
        [app endBackgroundTask:bgTask]; 
        bgTask = UIBackgroundTaskInvalid;
    }];
    bgTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(backgroundTask:) userInfo:nil repeats:YES];

}

-(void)backgroundTask:(NSTimer*)timer{

    i++;
    NSLog(@"%s  %d",__func__,i);
}

しかし、タイマー コールバックは約 10 分後に停止します 現在の位置をサーバーに継続的に更新するアプリケーションを作成するにはどうすればよいですか

4

2 に答える 2

3

アプリの Info.plist ファイルにBackground Modesキーがない可能性があります。

<key>UIBackgroundModes</key>
    <array>
            <string>location</string>
    </array>

これにより、アプリはバックグラウンドで位置情報サービスにアクセスできます。

ただし、この種のことは何度も尋ねられているため、詳細については、他のスタック オーバーフローの質問も少し参照してください。

ここにもう一つ読むべきものがあります。

于 2012-06-05T10:08:11.553 に答える