WWDC Quick Look 💓 By SwiftGGTeam
Optimize for 5G networks

Optimize for 5G networks

元の動画を見る

ハイライト

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())

キーポイント:

  • NWPathisExpensive現在のネットワーク パスが高価かどうかを示します (通常は従量制セルラーを指します)
  • NWPathisConstrained低データモードかどうかを示します
  • これら 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 が検出され、ネットワークが安価な場合は、自動的にフルスピード同期がオンになります。

関連セッション

コメント

GitHub Issues · utterances