View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • トピック
  • すべてのビデオ
  • 利用方法

その他のビデオ

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • Widget Code-Along 3 - アドバンシングタイムライン

    Widget Code-alongのパート3、そして最終パートへと向かうにつれ、あなたのWidgetのレベルも上がっていきます。パート2に引き続き、またはワープ、加速してこのパート3から始めてもかまいません。Widget、タイムライン、設定のコンセプトのより高度な部分を探っていきます。インプロセスまたバックグラウンドでのURLのローディングと、App内のコンテンツに直接リンクする方法をお見せします。複数のWidgetを作成してApp内の異なる機能を呼び出す方法、Widgetをよりダイナミックに設定する方法もお伝えします。 素晴らしいウィジェットの作成方法については、”Build SwiftUI views for widgets"をご覧ください。

    リソース

    • Building Widgets Using WidgetKit and SwiftUI
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC20

    • ウィジェットにおけるSwiftUIビューの構築
    • SwiftUIの新機能
    • Widget Code-Along 1-冒険の始まり
    • Widget Code-Along 2 - 異なるタイムライン
    • Widgetに設定とインテリジェンスを追加する
    • WidgetKitについて
  • このビデオを検索

    こんにちは WWDCへようこそ “Widget Code-Along 3 アドバンシングタイムライン” iOS System Experienceチームの イジーです Widget Code-Alongの 最終回です ウィジェットエクステンションから URLセッションを使う方法を説明します ウィジェット用のAPIが いくつか追加されています SwiftUIのLink APIを使い ウィジェットで タップできるリージョンを作成します また ウィジェットバンドルを追加します 同じエクステンションで 複数のウィジェットを提供でき すごく便利です さらに ウィジェットの設定に オプションの動的なセットを 提供する方法を見ていきます このセッションはCode-Along方式です Widgets Code-Alongセッションの 続きを学習します 前回までを実践済みの 皆さんは先に進みましょう まだの方も 大丈夫 パート3の内容を サンプルプロジェクトで学習できます 今回はたくさんの 説明事項がありますので チェックリストを作りました

    それではパート3を始めましょう

    先にプロジェクトにもう一つの ウィジェットを追加しておきました Leaderboardウィジェットです 見てみましょう

    ヘルス順にソートされた キャラクターのリストを提供します 仕組みを少し説明しましょう ウィジェットがネットワークから データを取得する方法です お気づきかと思いますが Timeline Provider APIは 戻り値ではなく 完了ハンドラで構築することで 特に 非同期のタスクの実行― ネットワークフェッチなどを 簡単にしています ここに CharacterDetailオブジェクトの loadLeaderboardData 非同期リクエストがあります 実装を見てみましょう

    これは 通常のURLセッションで 通常のデータタスクの リクエストをしています

    今はローカルファイルで リモートフェッチをシミュレートしていますが 普段はリモートウェブサービスを 呼び出すでしょう これは通常の プロセス内URLセッションAPIであり― 想像通りの動きをします バックグラウンドセッションは どうでしょうか?

    他のエクステンションタイプで 完了時にエクステンションをホストするアプリケーションを バックグラウンドURLセッションで起動するのを ご存じかも知れません これはウィジェットには当てはまりません ウィジェットは作成する すべてのURLセッションに応答します バックグラウンドセッションも含めてです ただしアプリケーションデリゲートがありません ウィジェットはどうすればよいのでしょう?

    WidgetConfigurationのonBackground URLSessionEventsモディファイアがあります アプリケーションデリゲートメソッドに 似ています

    sessionIdentifierと―

    完了ブロックがあります

    これらをアプリケーションと同じように扱います これが URLセッションです

    Leaderboardウィジェットを ホーム画面に追加します

    Character Detailウィジェットと同じように キャラクターをタップして 詳細画面を起動できるようにしたいです これはウィジェットURLと同じく とてもシンプルです SwiftUIのLink APIを使います

    Leaderboardウィジェットに AllCharactersViewがあります

    この定義にジャンプして―

    HStackをクリックすると SwiftUIのプレビューの 対応するHStackに 青色の枠が表示されます これをリンクに埋め込んで―

    destinationにキャラクターのURLをセットします

    ビルドと実行をしてみましょう

    ウィジェットをクリックすると-

    その行がハイライトされ- タップして 直接 キャラクターの情報に移動できます 今のはSpouty こちらはEggheadです

    Linkの使用方法でした

    お気づきと思いますが ウィジェットギャラリーに- Leaderboardウィジェットしかありません Ranger Detailウィジェットから メイン属性を Leaderboardウィジェットに移動したためです

    原則としてプロセスごとに メインは1つだけで 両方には追加できません ただしWidgetBundleを 作成できます

    WidgetBundleに 両方のウィジェットを追加して @mainを Leaderboardウィジェットから―

    バンドルに移動します ビルドと実行をして―

    ウィジェットギャラリーへ

    LeaderboardとRanger Detail ウィジェットが表示されました これでよし

    ウィジェットバンドルでした

    前回のセッションでは ハードコードしたリストで ウィジェットを構成できるようにしました でも 全部のオプションが 分からない場合は? この構成は SiriKitのインテントですので オプションの動的リストを インテントエクステンションで提供できます 他のインテントベースの機能と同じです

    エクステンションは すでに追加してありますが 手順をご説明します FileからNew そしてTargetで―

    “Intent”を検索し―

    Intents Extensionを追加します

    言語はSwiftを選択します Starting Pointは“None”にしてください これでできます

    インテントの定義を見ていきます 前回の静的インテントと よく似ていますが タイプはenumではなく カスタムのTypeです プロパティを見てみましょう

    identifierとdisplayStringの2つです これらはカスタムインテントタイプの デフォルトプロパティです では これらの値はどこから?

    IntentHandlerからです これがオプションの動的なセットを提供します timelineメソッドと同じく 非同期呼び出しです キャラクターのデフォルトセットは すでに返していますが CharacterDetailには remoteCharactersリストもあります これを追加しましょう

    ネットワークから追加の 情報をフェッチするものです ウィジェットを更新して 動的インテントを使ってみましょう

    CharacterSelectionIntentを “Edit All in Scope”します

    もうenumの値はありませんので このメソッドは不要です

    selectedCharacterは characterFromNameです

    nameは インテントのidentifierです

    表示してみましょう

    Character Detailウィジェットで 構成に行くと―

    元のCharacter Detailの EggheadとSpoutyに Mr. SpookとCake そしてOctoが加わりました ではCakeを

    オーケー やっぱりMr. Spookを チェックしたいので ホーム画面に 置くことにします

    これで ウィジェットに URLセッションと SwiftUIのLink APIを使用 2種類のウィジェットが入った バンドルを追加し さらに 動的構成を サポートできました 優れたウィジェットの デザイン的な観点については “Design Great Widgets”をご覧ください また それらのデザインガイドラインの SwiftUIへの適用については “Build SwiftUI Views for Widgets”を WWDC 2020で視聴してください ご視聴ありがとうございました これでウィジェットを 構築する準備は完了です 皆さんのアイデアを楽しみにしています

Developer Footer

  • ビデオ
  • WWDC20
  • Widget Code-Along 3 - アドバンシングタイムライン
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード(英語)
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    Apple Developerアプリを入手する
    Copyright © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン