[iOS 8] Today Extensionの実装方法

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

iOS 8から追加された6種類の Extension のひとつ、
Today Extension について実装方法をまとめます。
概要はこちらの記事をご確認ください。

今日ビューにウィジェットを配置し、
「Hello World」を表示します。

実装方法

1.新規プロジェクトを作成する。
2.File> New> Target を選択し、Today Extensionターゲットを作成する。

01_ターゲットの作成

3.各種設定を入力する。

02_ターゲットの作成2

4. schemeを有効にするか尋ねられます。Activeを押下する。

03_Activate

5.下記ファイルが作成される。

04_ターゲットの作成3

動作確認

1.Today Extensionのschemeを選択し、実行する。

05_選択

2.Todayを選択する。

06_Todayを選択する

3.通知センターが表示される。

07_動作確認

「Hello World」が表示されました!

ウィジェット名の変更

Info.plistの「Bundle display name」を修正する。

内容の更新

ウィジェットは定期的に更新され、その都度下記メソッドが実行される。
下記メソッド内で表示するデータの更新を行う。

    func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
        // Perform any setup necessary in order to update the view.

        // If an error is encountered, use NCUpdateResult.Failed
        // If there's no update required, use NCUpdateResult.NoData
        // If there's an update, use NCUpdateResult.NewData

        completionHandler(NCUpdateResult.NewData)
    }

completionHandler(NCUpdateResult.Failed):データの取得に失敗した
completionHandler(NCUpdateResult.NoData):データの更新がされなかった
completionHandler(NCUpdateResult.NewData):データの取得に成功した

まとめ

注意点として、下記内容があります。
・ウィジェット内でスクロールする事が難しい為、スクロールビューを置かない。
・ウィジェットではキーボード入力できない。

このような手順でウィジェットを実装する事ができます。
リリース済みアプリの場合も一部機能を抜粋し、ウィジェットに追加してみてはどうでしょうか。

概要はこちらの記事をご確認ください。