tomoyaonishiのブログ

iOSのことを中心に・・・その他もあるよ!

push通知からバックグラウンドでダウンロード

今回はpush通知を受信後バックグラウンドでアプリを起動させ、サーバから情報を取得する方法を紹介します。

そのまえに前回の記事を読むことを推奨します。

サイレント通知もしくは、通常のpush通知を受信した際にバックグラウンドで起動するという設定を行う必要があります。

プロジェクトを作成し、Capabilitiesタブへ

f:id:tomoyaonishi:20140628230323p:plain

次にBackgroundModesのスイッチをONにし、RemoteNotificationsにチェックを入れます。

f:id:tomoyaonishi:20140628230339p:plain

.plistファイルを編集することでも同じことが可能です、好みで。

f:id:tomoyaonishi:20140628230349p:plain

以上で設定は終了です。

次にAppDelegateを編集します。

push通知を受け取った時にサーバから情報をダウンロードする

最後に、push通知の情報に

content-available:1

を追加します。 これがないとバックグラウンドで起動されません。

{ "aps": 
          { "content-available": 1, 
            "alert": "content test", 
            "badge": 0, 
            "sound": "default" 
          }
}

これでpush通知が届いたらOSがアプリを起動してくれます。

Task Completionの状態と同じですね。30秒という時間制限が違うだけです。なので、NSURLConnectionとかでダウンロード処理ができます。 僕はバックグラウンドだからNSURLSessionのバックグラウンドモードを使わないといけないと思っていてハマりました。