【iOSDC Japan 2023 レポート】「一般的な通信でも使えるバックグランドURLSessionの活用方法」を聞いてきた。

2023.09.04

はじめに

年に一度のiOSエンジニアの為のお祭り iOSDC Japan 2023に参加しています。

せっかくなので、参加したセッションのレポートを書きたいと思います。

一般的な通信でも使えるバックグランドURLSessionの活用方法

登壇者

  • Li Jierongさん

概要

バックグランドURLSessionとは、アプリがバックグランドに行っても、終了されても、別プロセスでデータ通信が可能なURLSessionです。

バックグランドで長時間ダウンロードする必要がある時のみ使われるイメージはありますが、アプリやWidgetに必要な情報の先読み、バックグランドに行ったことによるタイムアウトの回避にも使えます。

Date taskがサポートされず、upload taskかdownload taskを使う必要があるので、使い方は少し特殊ですが、一度対応しておけば普通のURLSessionと同じ使い勝手になるので、バックグランドURLSessionを一般的な通信で使ってみませんか。

本トークでは、以下のトピックについて紹介します。

  • バックグランドURLSessionとは
  • メリットと活用方法
  • 実装の具体例
  • 使用上の注意事項

引用: fortee

資料

感想

どのようなことに使用できるのか説明されたセッションでした。バックグラウンドURLSessionを使ったことがなかったので勉強になりました。

URLSessionConfigurationでは、三つの種類がある。

  • default
  • ephemeral
  • background

backgroundを選択した場合、アプリとは別プロセスで実行される。

URLSessionでは一時停止した後、戻ってきても再開されるがタイムアウトエラーになることもあるが、その問題も解決してくれる。

アプリと同じプロセスで実行されるSessionConfigurationの場合、

  • アプリがバックグラウンドになるとアプリのプロセスと共に一時停止状態になる
  • フォアグラウンドに戻っても、タイムアウトによるエラーが発生する
  • メモリ不足が原因でバックグラウンドにあるアプリが終了された場合、中止する

上記の状態になるが、backgroundを選択した場合にはどれも解決することが出来る。

また、バックグラウンドURLSessionを活用したいけど、使い勝手が悪いと感じる人の対応策も記載いただいき、

  • SwiftUI
  • UIKit
  • WidgetExtension

での、実装例も共有いただけました。

バックグラウンドURL Sessionは別プロセスで実行される為、オーバーヘッドに注意する必要があるとのことで、大きいデータ通信時のみに使用するなど限定的な利用を推奨されていました。

おわりに

もし、実装する機会があれば、「あの時聞いたやつだ!」と明るい気持ちで取り組めそうです。

iOSDC 2023 レポート関連

Day 0

Day1