Background Fetch
New Multitasking APIs
iOS 7から追加されたマルチタスク用APIの「Background Fetch」について書きます。
概要
「Background Fetch」は、ユーザーがアプリを開く前に、コンテンツをアップデートできるようにします。そうすることで、新しいコンテンツが、ユーザーに見てもらうのを待つ状態をつくります。
実装方法
- Xcode > Target > Capabilities > Background ModesをONにして、Background fetchをチェックする
- Background fetchを有効にする(インターバルを設定)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Set background fetch interval
[application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
}
Background Fetch interval minimum
- アプリケーションから呼ばれるデリゲートメソッドを実装する
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
// Retrieve content
…
// Must call completion handler
completionHandler(UIBackgroundFetchResultNewData);
}
※上記のデリゲートメソッドが呼ばれるタイミングは、システムがユーザーの行動パターンを分析し、その結果を元に、アプリが起動される前のタイミングに呼ばれるようになっているようです。 Fetch timing
Background fetchの使いどころ
Appleのドキュメントでは以下のケースで、Background fetchを利用することを推奨していました。 - Social network feeds - News and entertainment - Blog aggregators - Weather - Finance
デバッグ方法
Xcode > Debug > Simulate Background Fetchを選択するとデリゲートメソッドが呼ばれます。
所感
こちらの技術ブログで現在の歩数をバックグラウンドでツイートするといったアイディアが書かれていました。他にも有用な利用方法があるかどうか、考えてみたいと思います。
参考情報
http://qiita.com/griffin_stewie/items/8371c09059b3ba7bb202
WWDC 2013 What’s New with Multitasking Session 204