ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Watch Face Sharingとの出会い
自慢できるようなwatchOS Appのコンプリケーションや、シェアしたくなるようなウォッチフェイスを作りましょう。watchOSやiOS App内でウォッチフェイスをシェアする方法、誰でも見つけることができ、ダウンロードできるようにウェヴでホストする方法もお伝えします。ウォッチフェイスプレビューイメージの使い方の成功事例と、インストール体験をスムーズにするための方法もお伝えします。
リソース
関連ビデオ
WWDC20
-
ダウンロード
こんにちは WWDCへようこそ “Watch Face Sharingとの出会い” watchOSのエンジニアマネージャー ジャレド・マギャンです 今日はApple Watchの 文字盤の共有についてお話しします watchOS 7とiOS 14の新機能です 文字盤の共有は まさに期待どおりのものです 誰とでも文字盤を共有できる機能を 好きなように設定できます 文字盤はWatchから 画面を長押しして新しい“共有”ボタンを タップすると直接共有されます 受信者を選び メッセージを作成するだけです メッセージはWatch上に インラインプレビューを表示できます 受信者も同様です プレビューをタップすると Watchに文字盤を追加するよう求められます
iPhoneからも文字盤を共有できます iOS Watchアプリケーションを開き 文字盤を選択するだけです それから右上の角で おなじみの“共有”アイコンをタップします
共有シートが表示され 文字盤の共有方法を選択できます デベロッパの皆様に文字盤共有は どんなメリットをもたらすのでしょう? 文字盤はアプリケーションから 直接共有でき― ウェブサイトでホストされています わずか数タップで 構成した文字盤が Apple Watchに表示されます 文字盤にコンプリケーションを含む場合 文字盤を追加するとアプリケーションを ダウンロードするよう促されます
受信者の地域で利用できない アプリケーションの場合 コンプリケーションも 文字盤で利用できません いくつかの新しい文字盤は 以前のWatchで利用できないことも 言及しておきます そしてナイキとエルメスの文字盤は それぞれのハードウェアでのみ 生成と追加ができます 文字盤ファイルは すべての文字盤の設定を含みます カラーやスタイル 写真とコンプリケーションなど Watchで どれでも設定できます 文字盤にコンプリケーションがある場合 ファイルはサンプルエントリを含みます それにより アプリケーションが インストールされていなくても 受信者のデバイスでプレビューできます 今年 新しいコンプリケーションAPIを ClockKitに導入しました 現在 文字盤は同じアプリケーションから 複数のコンプリケーションをサポートします コンプリケーションが ユーザー情報辞書や ユーザーアクティビティを使用する場合 それらの嗜好を 共有した文字盤に含むことができます たとえば 共有した文字盤が Dawn Patrolのコンプリケーションを含むと ユーザー情報辞書を使用し サーフィン条件を表示する都市を 指定できます 詳細は“Create Complications for Apple Watch”をご確認ください
今年 ClockKitに 新しいAPIを導入したことで ユーザーにアプリケーション内で 文字盤の追加を促せるようになりました 事前設定した文字盤ファイルへのローカルURLで addWatchFaceを呼び出します するとユーザーはApple Watchに 文字盤を追加するよう促されます このAPIはwatchOSとiOS両方の ClockKitで利用可能です 文字盤がコンプリケーションとともに Watchに追加されたら アプリケーションが実行され ClockKitからのタイムライン要求に応えます この時点で 先ほど述べた ユーザー情報辞書を参照できます ジョーに交代して 既存のアプリケーションへの 機能の追加プロセスを説明してもらいましょう ありがとう ジャレド wacthOSでソフトウェアエンジニアをしている ジョー・ディオンです 今日はiOSとwatchOSのアプリケーションへ 新しい文字盤共有APIを取り入れる 簡単な方法をご紹介します “Coffee Tracker”という アプリケーションがあります あなたの日常的なカフェイン摂取量を 記録できます これはメインビューです その日のカフェイン摂取量を 確認できます 下にあるコーヒーカップボタンを タップすると ドリンクリストビューが開きます ドリンクリストビューでは カフェイン飲料のリストを見ることができます そのうち1つをタップすると その日の私のカフェイン摂取量に 追加されます
watchアプリケーションもあります 現在のカフェイン摂取量を表示する コンプリケーション付きです このコンプリケーションは かなり役立ちますので アプリケーションのコンテキスト内で カスタマーと共有したいです iOSアプリケーションで 文字盤共有を実装することが その達成のための すばらしい手段だと思います 実装する方法をみていきましょう アプリケーションに文字盤共有を実装する 手順はこうです 初めに アプリケーションの コンプリケーション付きの文字盤を生成します 次に アプリケーションのバンドルに文字盤と 文字盤プレビューをインポートします それから文字盤を表示して 追加するためのUIを作成します そして最後に 古いWatchへのサポートを追加します それではやり方を見ていきましょう
わたしのiPhoneです 初めに 共有する文字盤を作成するために Watchを開きます
文字盤ギャラリーを開きます
それではアプリケーションを補完する 文字盤を探しましょう
クラシックでアナログな見た目の モジュラーコンパクトの文字盤が好きなので これにします 素晴らしいグラフィックの 長方形のコンプリケーションが 見栄え良く 文字盤の下部にあります
Coffee Trackerの コンプリケーションを選択します いいですね でも私は独自の文字盤を作りたいので カラーを選んでいきます 文字盤をもっとコーヒーらしく 見せるものがいいですね
ウォルナット色がコーヒーに似ています 中央のコンプリケーションも選びます
Breatheコンプリケーションは カフェイン中毒のユーザーを すこし落ち着かせるのに役立ちます
いい感じ 共有できるカフェイン摂取量の 文字盤ができました ただし 共有する前に App Storeに そのアプリケーションが 公開されている― 必要があることに注意してください これで文字盤を共有する準備ができました 右上の角の“共有”ボタンを タップするだけです
共有ビューで “オプション”ボタンが表示されています 共有した文字盤から コンプリケーションやそれらのデータを 除外できます このコンプリケーションはタップすると エスプレッソを記録するよう設定されています 先ほどジャレドがお話しした ユーザー情報辞書を使用しています でも文字盤をカスタマーに 共有する際には それをデフォルトにしたくないので “データなしで含める”を コンプリケーションに選択します
すべて良さそうなので そのままにしていきましょう Eメールで共有する場合 文字盤のプレビューイメージとともに 文字盤ファイルを受け取ります プレビューイメージは 後でとても役に立ちます すでに文字盤をEメールで送り ダウンロードにコンテンツを抽出したので 見てみましょう Macで“ダウンロード”フォルダを開きました Eメールからの 文字盤ファイルと そのプレビューがあります Xcodeプロジェクトに この文字盤ファイルを追加します
アプリケーションで文字盤を共有する もう一つの重要な側面は 文字盤のプレビューを表示することです フォルダの中に プレビューイメージがあるのが分かります UI作成時にこのプレビューイメージを 使用するので これをXcodeアセットフォルダに追加します イメージを入手したので ついにコーディングの準備ができました DeviceModelクラスを開くところから 始めます
このクラスはiPhoneとWatchが ペアリングしているか検出するために作りました これを Watchを持っているユーザーのみに 文字盤を表示するために ビューで使用します また WatchConnectivityフレームワークを インポートします これにより このクラスで WCSessionDelegateプロトコルを実装できます これを実装することで WCSessionを使用して ペアリングされたWatchを ユーザーが持っているか確認できます WCSessionを使用して このクラスにisPaired computed変数を作成し Watchがペアリングされているか示します
これでisPaired変数ができたので DrinkListViewにいきましょう
ドリンクリストの下部に ユーザーが文字盤を追加するための ナビゲーションリンクが欲しいです しかし ナビゲーションリンクを ペアリングされたApple Watchを持つ人にのみ 表示したいので DeviceModelクラスを使用し DeviceModelのisPaired変数に 等しい定数を作成します 次に 新しく作成した定数を使用し ビューに“文字盤の追加”ビューへの ナビゲーションリンクを表示するか決定します ここではそのチェックとUIを追加します
これが新しく作成した ナビゲーションリンクです ただ AddFaceViewが コンテンツを何も持っていません AddFaceViewを詳しく見てみましょう
AddFaceViewに 文字盤のプレビューと文字盤を追加するための ボタンを表示する必要があります このためのUIを追加します
インポートした文字盤の プレビューが表示され 文字盤を追加するためのボタンが作成されます ボタンがアクションブロックを実行する間 アクティビティインジケータも表示されます
このボタンはApple Design Resources ウェブサイトのアセットを使用して作成しました 今のところボタンでは何も実行されないので 新しいaddWatchFace関数を使用して 修正します 初めに ClockKitをインポートします
そしてaddWatchFaceを呼び出すための ラップ関数を作成します
新しいaddFace関数の使用方法を理解するため このコードを詳しく見ていきましょう
初めにアプリケーションのバンドルの 文字盤ファイルを指すURLを作成します
次に新しいaddFace関数を CLKWatchFaceLibraryのインスタンスを 作成して使用します ラップされていないwatchfaceURLを使用し addWatchFace関数を呼び出します
完了ブロックで 文字盤を追加するときに発生する すべてのエラーを考慮する必要があります ここではエラーを出力します では ボタンのアクションブロックで このメソッドを呼び出してみましょう
addFaceを呼び出しているのが分かります 先ほど作成してプロジェクトに追加した 文字盤を使用しています Add Watch Face APIの動作を確認し アプリケーションを実行してみましょう
ドリンクビューを開くと―
下部にナビゲーションリンクボタンが 表示されています タップして “文字盤の追加”ビューを表示します “文字盤の追加”ビューが 文字盤のプレビューとともに表示されます この文字盤はかなり使えそうに見えるので “文字盤の追加”ボタンをタップします
Watchアプリケーションです “マイ文字盤に追加”をタップすると
Watchに文字盤が追加されました すばらしい ユーザーはこの文字盤が とても役立つと感じるはずです
しかしこのモジュラーコンパクトの文字盤は Series 3のWatchに互換性がありません ユーザーが古いデバイスを持っている場合に備え フォールバックの文字盤を提供できます Xcodeに戻り 方法を見てみます
今 addWatchFaceWrapperは予期される エラーを処理することができません 最初の文字盤に互換性がない場合 フォールバックの文字盤を 追加することで これを変更しましょう
それではSeries 3に互換のある フォールバックの文字盤とともに addWatchFaceWrapper関数を呼び出します
モジュラーの文字盤を フォールバックとして使用しています Series 3のWatchと 互換性のある文字盤リストから この文字盤を選びました Human Interface Guidelinesで概説されています このファイルはすでに Xcodeプロジェクトにも入れているので Apple Watchを持っている人なら 誰でもアプリケーションの文字盤を使用できます 次に進む前に デモでいくつか ベストプラクティスを確認しましょう 初めに文字盤共有の際 ユーザーデータが 含まれる可能性があることを覚えておきましょう これはコンプリケーションに表示される コンテンツの指定に役立ちますが 意図せず個人的なデータが含まれないよう 注意してください
文字盤のプレビューが空白にならないよう コンプリケーションにサンプルデータがあるか 確認することも重要です
WatchConnectivity APIを使用して iOS アプリケーションから 文字盤を提供する前に ペアリングされたWatchがあるか 検出してもよいでしょう また 文字盤のプレビューイメージを 取得する最善の方法は Eメールです Series 3のWatchに互換性のない 文字盤なら そのユーザー向けの文字盤を準備することも 覚えておいてください 最も大事なことですが 文字盤共有にアプリケーションを含める前に 公開する必要があることを 忘れないでください App Store Connect IDを 文字盤ファイルに含める必要があるためです それでは ジャレドに返します ありがとう ジョー 文字盤はウェブサイトでも共有できます iOSでユーザーが文字盤を ダウンロードすると SafariがApple Watchに その文字盤を追加するよう促します ここに表示する文字盤のMIMEタイプを 使用してファイルを提供する場合 Safariはファイルを文字盤として 認識する可能性が高いです
例を表示しています ウェブサイトで共有されている文字盤です 文字盤のプレビューは 公式の“Add Apple Watch Face” ボタンの 上に表示する必要があります ジョーがご紹介したように iOSのWatchアプリケーションでEメールを介して 文字盤を共有することで プレビューイメージを取得できます ボタンはApple Design Resourcesウェブサイトで 見つけることができ watchOSで使用できる コンパクトなバージョンもあります このようにグラフィックをつけて ハードウェアで表示したいなら デザインリソースから イメージを見つけることもできます
共有する文字盤に Apple WatchのSeries 3との互換性がなければ 代替の文字盤を提供することが重要です 2つの文字盤を共有する場合 別のプレビューとボタンを ウェブページに含める必要があります 文字盤の互換性を含む詳細については “watchOS Human Interface Guidelines”を ご参照ください QRコードとNFCタグで 文字盤共有の機会を増やせます Apple Watchでコンプリケーションと アプリケーションを簡単に入手するために 文字盤ファイルをホストする ウェブリンクを埋め込むだけです 皆さんが独自の文字盤を構成し アプリケーションで 文字盤共有APIを採用するか ウェブサイトで文字盤を ホストしてくれるのを楽しみにしています ユーザーのApple Watchで 皆さんのアプリケーションを 入手するための すばらしい方法です ありがとうございました
-
-
7:20 - Detect Paired Watch
var isPaired: Bool { if (WCSession.isSupported()) { let session = WCSession.default session.delegate = self session.activate() return session.isPaired } else { return false } }
-
9:01 - Add Face Wrapper
private func addFaceWrapper(withName: String) { if let watchfaceURL = Bundle.main.url(forResource: withName, withExtension: "watchface") { CLKWatchFaceLibrary().addWatchFace(at: watchfaceURL, completionHandler: { (error: Error?) in if let nsError = error as NSError?, nsError.code == CLKWatchFaceLibrary.ErrorCode.faceNotAvailable.rawValue { print(nsError) } isLoading = false }) } }
-
11:04 - Add Face Wrapper with Fallback Face
private func addFaceWrapper(withName: String, fallbackName: String?) { if let watchfaceURL = Bundle.main.url(forResource: withName, withExtension: "watchface") { CLKWatchFaceLibrary().addWatchFace(at: watchfaceURL, completionHandler: { (error: Error?) in if let nsError = error as NSError?, nsError.code == CLKWatchFaceLibrary.ErrorCode.faceNotAvailable.rawValue { if let name = fallbackName { // We failed, trying with fallbackName. addFaceWrapper(withName: name, fallbackName: nil) } } isLoading = false }) } }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。