Background Fetch

New Multitasking APIs

iOS 7から追加されたマルチタスクAPIの「Background Fetch」について書きます。


概要

「Background Fetch」は、ユーザーがアプリを開く前に、コンテンツをアップデートできるようにします。そうすることで、新しいコンテンツが、ユーザーに見てもらうのを待つ状態をつくります。

実装方法

  1. Xcode > Target > Capabilities > Background ModesをONにして、Background fetchをチェックする
  1. Background fetchを有効にする(インターバルを設定)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Set background fetch interval
    [application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
}

Background Fetch interval minimum

  1. アプリケーションから呼ばれるデリゲートメソッドを実装する
- (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