ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
ライブアクティビティのブロードキャスト更新
ブロードキャストプッシュ通知を使用すると、1回のリクエストで何千ものライブアクティビティにアップデートを送信できます。ブロードキャストプッシュ通知がアプリ、サーバ、Apple Push Notification Service間でどのように動作するかを確認し、この機能のベストプラクティスと実装方法を説明します。
関連する章
- 0:00 - Introduction
- 1:17 - Overview
- 4:57 - Get started
- 7:30 - Subscribe to updates
- 8:39 - Send broadcast push notifications
リソース
- Forum: App & System Services
- Sending broadcast push notification requests to APNs
- Sending channel management requests to APNs
- Setting up broadcast push notifications
- Starting and updating Live Activities with ActivityKit push notifications
関連ビデオ
WWDC23
-
ダウンロード
こんにちは Apple Push Notificationsチームの Parthです 今日は ライブアクティビティの アップデートを1つのプッシュ通知で 多数のユーザーにブロードキャストする 新しい方法を紹介します ライブアクティビティを使用すると 進行中のアクティビティに関する最新情報を 一目で確認できます デリバリの追跡 プレイ中のゲームのスコアの確認 直近のフライト情報のモニタリングなど ライブアクティビティには 様々な用途があります プッシュ通知を使って アップデートをリモートから送信すれば 常に最新の情報をユーザーに提供できます このセッションでは ライブアクティビティで リモートプッシュ通知を使用し 常に最新の状態を保つ方法を紹介します 次に この新機能を使用して ライブアクティビティのアップデートを ブロードキャストする方法を見ていきます アプリがブロードキャストのアップデートに サブスクリプション登録する方法も紹介します 最後に ブロードキャスト プッシュ通知を送信して 多数のデバイスのライブアクティビティを 一度に更新する方法を説明します 最初に紹介するのは プッシュ通知を使用して ライブアクティビティを更新する方法です ライブアクティビティが開始されると アプリはActivityKitに プッシュトークンを要求します ActivityKitはこのプッシュトークンを Apple Push Notifications Service (APNs)から取得して アプリに渡します このプッシュトークンは アプリがデバイスで要求した ライブアクティビティごとに一意です アプリはこの一意のプッシュトークンを アプリサーバと共有します
アップデートが発生すると サーバから APNsにプッシュ通知が送信されます その際 トークンとペイロードも渡されます APNsは そのペイロードを 各デバイスに配信します この方法は デリバリの追跡など 各アップデートが それぞれのユーザーに 固有の場合に役立ちます では 多数のユーザーが 同じイベントの最新情報を 頻繁に確認する場合は どうでしょうか 例えば 人気ゲームのスコアを 何万人ものファンが 頻繁に確認するようなケースです この場合 これまでは ライブアクティビティを利用している 全ユーザーのプッシュトークンを アプリサーバが管理する必要がありました アップデートが発生すると サーバは 同じペイロードを含む プッシュ通知を プッシュトークンごとに個別に送信します 現在では これと同じ体験を実現する もっと良い方法があります iOSとiPadOS 18では APNsのブロードキャストプッシュ通知を 利用して ライブアクティビティの アップデートを多数のユーザーに 配信できます ブロードキャストプッシュ通知を使えば アクティブなライブアクティビティがある プッシュトークンを 保存する必要がありません アップデートの配信時に 1つのプッシュ通知を送信するだけです あとはAPNsが 各デバイスに確実に配信してくれるので すべてのユーザーに最新情報を提供できます
1つのプッシュリクエストで 多数のユーザーにリーチするための 新しいコンセプトがチャンネルです
TVやラジオのチャンネルを 思い浮かべてください 放送局はチャンネル経由で コンテンツを送信します そのチャンネルの視聴者は 全員が同じコンテンツを同時に受信します 多数の人がフォローしているイベントで ブロードキャストプッシュ通知を使うには それぞれのイベントを チャンネルに関連付ける必要があります 各チャンネルは 一意のチャンネルIDで識別されます 例えば ブロードキャストプッシュ通知を 使用して最新のスコアを送信する場合 スポーツの試合ごとに 異なるチャンネルを用意します フライトの最新情報を配信するのであれば フライトごとに 一意のチャンネルを割り当てます
イベントのアップデートを必要とする 各ライブアクティビティは 目的のチャンネルで プッシュ通知を受信登録します イベントのアップデートを送信するときは ペイロードを含む1件のプッシュ通知を チャンネルに送信するだけで済みます その後 チャンネルに受信登録している 全ユーザーへの配信はAPNsが行うため アップデートを効率的に提供できます では ブロードキャストプッシュ通知を 使用して ライブアクティビティの アップデートを送信する方法を 説明しましょう 近々チームでサッカーの親善試合があるため 誰でも試合経過を確認できる アプリを作成しています
このアプリでは チームメンバーが ライブアクティビティを開始して プレイ中の試合の経過を確認できます 多くの人がスコアをフォローすると思うので ブロードキャスト プッシュ通知を使用して 全員のライブアクティビティに アップデートを送信しましょう ブロードキャストプッシュ通知を 使用するには まず この試合のチャンネルを作成して 一意のチャンネルIDを 取得する必要があります チャンネルIDは アプリがアップデートを受信登録したり サーバがアップデートを 送信したりする際に使用されます まず アプリで新しい ブロードキャスト機能を有効にします そのためには デベロッパポータルを使用します 機能リストのに ブロードキャスト機能をオンにする 新しいトグルがあります この機能を有効にしたら アプリの最初のチャンネルを作成しましょう そのために使うのが プッシュ通知コンソールです このコンソールでは APNsとの統合を簡単にテストできます また ブロードキャストプッシュ通知を サポートするように拡張されています 新しいチャンネルを作成するには タブに移動し
を選択します ここでは 新しいチャンネルに 環境やメッセージ保存ポリシーを 設定できます この機能はまだテスト段階なので 開発環境でチャンネルを作成しましょう メッセージ保存ポリシーには 2つの選択肢があります と です では チャンネルで最後に受信したメッセージが デバイスごとに保存されます では プッシュ通知を送信する時点で APNsに接続しているデバイスにのみ アップデートが配信されます その代わり 公開予算を増やすことができます 今回のサッカーの試合では 多数のイベントが発生するため アップデートを頻繁に 送信することになります 保存ポリシーとして を選択します
をクリックすると この試合の新しいチャンネルが作成されます
このチャンネルIDを使用して アプリやサーバはアップデートを配信します チャンネルIDはbase64でエンコードされ チャンネルごとにランダムに生成されます いつでもこのページにアクセスして チャンネルの作成中に 選択した設定を確認できます
アプリ用のチャンネルを 作成する方法は2つあります プッシュ通知コンソールを使用すると ブロードキャストプッシュ通知の テストと統合を簡単に行えます 本番環境に導入する場合 アプリサーバはチャンネル作成リクエストを APNsに直接送信します 詳しくは APNsによるチャンネル管理に 関するドキュメントをご覧ください これで 今度のサッカーの試合用に チャンネルを作成できました この試合のチャンネルIDを保存して アプリと共有する必要があります ライブアクティビティが開始された時 アップデートを受信登録するためです このアプリでは ライブアクティビティを開始する前に リモートサーバに 試合のチャンネルIDを要求します ここでは ライブアクティビティを 開始する関数を作成します まず リモートサーバから入手した この試合のチャンネルIDを渡します 次に このアクティビティの属性と 初期値を作成します 最後に アクティビティを要求する際 pushTypeとして パラメータ「channel」を チャンネルIDと共に渡します これにより このIDが示すチャンネルで このアクティビティの プッシュ通知を受信登録するよう ActivityKitに指示します 素晴らしい! これで ブロードキャストプッシュ通知を 使用する準備がほぼ整いました 試合用のチャンネルを作成したので チームのメンバーが ライブアクティビティを開始すると 作成済みのチャンネルIDを アプリが受け取り このチャンネルで アップデートの受信登録を行います では ブロードキャストプッシュ通知を 使用し すべてのデバイスに アップデートを一斉配信する方法を 見ていきましょう 試合が始まり さっそくホームチームがリードしています この情報をすぐに共有しましょう チャンネルで最初の ブロードキャストプッシュを送信するには プッシュ通知コンソールを もう一度使用します プッシュ通知コンソールで タブを選択します 次に この試合用に先ほど作成した チャンネルをクリックします をクリックします チャンネルIDなど この通知の送信に必要な 一部の情報は自動的に入力されます まず 送信する通知の名前を入力します
このアップデートはすぐに配信したいので 優先度としてを選択します 次に ペイロードビルダを使用して このアップデートのコンテンツを追加します
まず ホームチームの得点を追加します
続いて 相手チームの得点を入力します
さらに このライブアクティビティの 簡単なアップデートテキストを追加します
最後に アップデートの 現在のタイムスタンプを追加します をクリックします
1つのプッシュ通知で 得点に関する最新情報を 全員に配信できます
ブロードキャストプッシュ通知で 考慮すべき重要な要素は チャンネル管理です チャンネルとライブアクティビティは それぞれライフサイクルが異なります チャンネルを作成した後は アクティブな受信登録者がいなくても また ライブアクティビティの利用者が いなくても チャンネルIDは有効です そのIDを使用して ブロードキャスト プッシュ通知を送信できます その後に発生したライブアクティビティが 同じチャンネルに 受信登録することもできます ただし アクティブなチャンネルの 総数には制限があります サーバでチャンネル管理APIを使用して 不要になった古いチャンネルや 未使用のチャンネルを削除してください 今回のサッカーの試合では 試合が終わり このチャンネルが不要になった時点で 削除します プッシュ通知コンソールは ブロードキャスト通知の 統合をテストする際に役立つ 非常に便利なツールです 本番環境に導入する場合 チャンネル管理と ブロードキャストプッシュ通知の 両方について サーバからAPNsに直接リクエストを 送信する必要があります アプリ用のチャンネルを作成したり 削除したりするときは チャンネル管理APIを使用します アプリサーバは ブロードキャスト プッシュ通知のリクエストを 新しいAPNs APIに直接送信します APNsに接続する時と同じ認証方式 (証明書またはトークンベース)を 使用して ブロードキャストプッシュ通知の リクエストを送信します これらのAPIについて詳しくは ドキュメントを参照してください
これでライブアクティビティの アップデートをAPNsから ブロードキャストする方法がわかりました アプリでこの機能をオンにしたら プッシュ通知コンソールで 最初のチャンネルを作成します アプリでActivityKitを利用し 新しいpushTypeの チャンネルを使用して ライブアクティビティの アップデートを受信登録します ブロードキャストプッシュ通知を送信して ライブアクティビティを更新します 最後に APNsの新しいAPIを サーバに統合して チャンネルを管理したり ブロードキャストプッシュ通知を 直接送信したりできるようにします ブロードキャストプッシュ通知を 新たな方法で活用したアプリを 見るのを楽しみにしています ありがとうございました
-
-
7:50 - Subscribe a Live Activity to broadcast push notification updates
// Request a Live Activity and subscribe to broadcast push notifications import ActivityKit func startLiveActivity(channelId: String) { let gameAttributes = GameAttributes() let initialState = GameAttributes.ContentState( home: 0, away: 0, update: "First Half" ) try Activity.request( attributes: gameAttributes, content: .init(state: initialState, staleDate: nil), pushType: .channel(channelId) ) }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。