2013年6月21日金曜日

バックグラウンドで動かす


AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    UIBackgroundTaskIdentifier bgTask;
}

AppDelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
        [application endBackgroundTask:bgTask];
    }];
}

以上でアプリがバックグランドに回っても動作し続けるが、10分までという制限がある。

しかし音声を再生したり、GPSを使っている場合は、イベントによって再度動かせる。

例えばGPSを使ってロケーションを取得していれば、ロケーションが変わったときに
ふたたび動き出す。

GPSをバックグランドで使うには、info.plistの編集が必要。

Information Property List の右の+をクリックして、Required background modesを選び、
item0のValueで、App registers for location updates を選ぶ。