ハイライト
iOS 15 は、「Auto Switch 5G」および「Smart Data Mode」を通じて、ネットワーク インターフェイスの選択をシステム レベルで自動的に管理します。開発者はネットワークの種類や用途に基づいて判断するのをやめるべきです
allowsExpensiveNetworkAccessそしてallowsConstrainedNetworkAccessアプリケーションをさまざまなネットワーク環境に適応させます。
主要内容
2G から 5G まで、モバイル ネットワークの各世代は、新たなアプリケーションの可能性をもたらします。 2G では SMS と MMS が可能になり、3G ではインターネットがポケットに収まり、4G では高解像度のビデオ通話とリアルタイム マルチプレイヤー ゲームが日常的なものになりました。 5G は理論上の速度が最大 4 Gbps、遅延が 7 ミリ秒と低く、より多くのデバイスを同時に接続できます。
しかし、5G は新たな課題ももたらします。 5G ネットワークは LTE よりも多くの電力を使用し、カバレッジが均一ではないため、ユーザーは従量制プランを利用している可能性が高くなります。開発者が 5G を単に「高速 Wi-Fi」として使用すると、ユーザーは急速なバッテリー切れや過剰なトラフィックのリスクに直面する可能性があります。
Apple は、この問題を解決するために 2 つのシステムレベルのテクノロジーを iOS 15 に組み込みました。
5G への自動切り替え: システムは Wi-Fi、LTE、5G の相対的なパフォーマンスを継続的に評価し、現在のタスクに最適なネットワーク インターフェイスを自動的に選択します。大きなファイルをダウンロードする場合は 5G に切り替え、バックグラウンドでの低データ タスクには LTE を使用し、公衆 Wi-Fi が安全でない場合はセルラーを優先します。
スマート データ モード: ネットワークの混雑を検出し、最も抵抗の少ないインターフェイスに自動的に移行します。スタジアムやカンファレンス センターなどの混雑した場所では、システムは接続を混雑した Wi-Fi から 5G に移行し、アプリケーションのネットワーク サービスが中断されないようにします。
これは、開発者が「現在 Wi-Fi か 5G か」を判断するコードを記述する必要がなく、また記述する必要もないことを意味します。システムはすでにこの決定を行っており、開発者はネットワークが「高価」であるか「制限されている」かに注意を払うだけで済みます。
詳細
ネットワークの種類に基づいて判断するのをやめる
(09:18) 過去の一般的な方法:
// このようにしない
if currentNetworkType == .wifi {
// 高解像度ビデオをダウンロードする
} else if currentNetworkType == .cellular {
// サムネイルだけをダウンロードする
}
このアプローチでは、アプリケーションが 5G 時代に最高のエクスペリエンスを得ることができなくなります。 5G は公衆 Wi-Fi より最大 10 倍高速で、システムはマルチパス ネットワークをサポートします。ユーザーが Wi-Fi と 5G に同時に接続している場合、システムはデータ送信チャネルとして 5G を選択することがあります。
正しいアプローチは、URLSession または Network Framework のプロパティを通じてネットワーク特性を判断することです。
let config = URLSessionConfiguration.default
config.allowsExpensiveNetworkAccess = true
config.allowsConstrainedNetworkAccess = false
let session = URLSession(configuration: config)
キーポイント:
allowsExpensiveNetworkAccess: 高価なネットワーク (従量制携帯電話など) でリクエストを許可するかどうかを制御します。allowsConstrainedNetworkAccess: 制限されたネットワーク (低データ モードなど) でリクエストの実行を許可するかどうかを制御します。- これら 2 つのプロパティは、従来のネットワーク タイプ チェックを置き換えます。
- システムは、ユーザーの携帯電話プランとデータ モード設定に基づいて、「高価」および「制限付き」ステータスを自動的に導き出します。
高度なフレームワークを使用して 5G を最大限に活用する
(09:46) Apple の高度なネットワーキング フレームワークは 5G 向けに最適化されています。
// AVFoundation 自动适配 5G 高带宽
let playerItem = AVPlayerItem(url: highQualityVideoURL)
let player = AVPlayer(playerItem: playerItem)
// システムは 5G でより高いビットレートのビデオストリームを自動的に要求する
// URLSession 在 5G 下自动使用更激进的缓存策略
let config = URLSessionConfiguration.default
config.allowsExpensiveNetworkAccess = true
let session = URLSession(configuration: config)
// 大きなファイルのダウンロードタスク
let downloadTask = session.downloadTask(with: largeFileURL)
downloadTask.resume()
キーポイント:
AVFoundation5G では、Apple TV や Apple Music の動作と同様に、より高品質のビデオ ストリームが自動的にリクエストされます。CallKit5G での VoIP の遅延の最適化URLSessionそしてNetworkフレームワークは、5G の高帯域幅を自動的に活用するように調整されています。- Apple ニュースは 5G 環境下でオフラインで読むために記事をキャッシュし、iCloud 写真は 5G 環境下で同期され、Wi-Fi が利用できない場合は 5G 経由でシステム バックアップが自動的に実行されます。
制限され高価なネットワーク パスに適応する
(10:39) ユーザーは設定で 3 つのデータ モードを選択できます。
| データモデル | ネットワークの特性 | 該当するシナリオ |
|---|---|---|
| 5G でより多くのデータを許可 | 安価でWi-Fiと同等 | 無制限のデータプラン |
| 標準 | 高価 | 通常データプラン |
| 低データモード | 制限付き | ローミングまたはトラフィックの制約 |
ネットワーク フレームワークでネットワーク プロパティを確認します。
import Network
let monitor = NWPathMonitor()
monitor.pathUpdateHandler = { path in
if path.isConstrained {
// 低データモード: 必須でないダウンロードを一時停止し、画像品質を下げる
self.reduceDataUsage()
} else if path.isExpensive {
// 高コストのネットワーク: 大きなファイルのダウンロードを続行するかユーザーに確認する
self.promptForExpensiveDownload()
} else {
// 高コストではないネットワーク: 通常どおり使用し、コンテンツをプリロードできる
self.enableAggressivePrefetching()
}
}
monitor.start(queue: DispatchQueue.global())
キーポイント:
NWPathのisExpensive現在のネットワーク パスが高価かどうかを示します (通常は従量制セルラーを指します)NWPathのisConstrained低データモードかどうかを示します- これら 2 つの属性は、ネットワーク サービスの可用性を判断するための唯一の基準です
- アプリケーションが「高価な」ベースのポリシーを実装している場合、ユーザーが上書きできる設定を提供する必要があります。
5G ネットワークの種類の概要
(05:15) 5G 導入には 2 つの主なモードがあります。
- NSA (非スタンドアロン): 既存の LTE コア ネットワークに基づき、LTE と 5G リンクの両方を使用してトラフィックをスケジュールし、サブ 7GHz とミリ波をサポートします。
- SA (スタンドアロン): 新しい 5G コア ネットワークに完全に基づいており、サブ 7GHz およびミリ波もサポートし、LTE よりも遅延が低い
Apple Park の実測速度は LTE の 20 倍である 3Gbps に達し、ping 遅延はわずか 7 ミリ秒です。ただし、5G は LTE よりも多くの電力を消費するため、システムはパフォーマンスと電力消費のバランスを自動的にとります。
重要ポイント
-
アダプティブ メディア品質: ビデオ再生アプリケーションでは、以下に基づいています。
isExpensiveそしてisConstrainedビデオのビットレートを動的に調整します。 5G アンリミテッド パッケージ ユーザーは 4K を自動的に再生し、標準モードでは 1080p を再生し、低データ モードでは 720p に低下するか、自動再生を一時停止します。入口API:NWPathMonitor+AVPlayerItem優先ピークビットレート。 -
スマートなプリロード: ニュースやソーシャル アプリでは、ネットワークが高価でないときに、次の数ページのコンテンツと高解像度画像をプリロードします。高価なネットワークまたは制限されたネットワークが検出された場合はプリロードを停止し、ユーザーが明示的に要求したコンテンツのみをロードします。使用
allowsExpensiveNetworkAccess制御バックエンドURLSession行動。 -
5G 低遅延マルチプレイヤー: 5G の 7ms 遅延を利用したリアルタイム バトル ゲームを開発します。協力する
Network額装されたNWConnectionQUIC 接続を確立してハンドシェイクの遅延を減らします。スタジアムなどの混雑した場所では、システムが自動的に 5G に切り替わり、Wi-Fi の混雑を回避します。 -
バックグラウンドの大きなファイル転送戦略: クラウド ディスクまたはファイル同期アプリケーションで大きなファイルをアップロードおよびダウンロードするために使用されます。
URLSessionDownloadTaskバックグラウンドモード。協力するallowsExpensiveNetworkAccessユーザーが設定で「セルラー同期を許可する」を選択できるようにするプロパティ。 5G が検出され、ネットワークが安価な場合は、自動的にフルスピード同期がオンになります。
関連セッション
- Swift での async/await について — Swift での同時プログラミングの新しいパラダイム
- URLSession の新機能 — URLSession の新機能とベスト プラクティス
- iCloud プライベート リレーの準備をしましょう — iCloud プライベート リレーのネットワークへの影響
- 最新の Mac のネットワーク拡張機能 — macOS ネットワーク拡張機能の新機能
コメント
GitHub Issues · utterances