ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
App Clipの最新情報
App Clipの最新情報です。サイズ制限、CloudKit、キーチェーンの使用方法が改善され、App Clipの構築が簡単になりましたので、是非ご確認ください。また、診断ツールでApp Clipを診断する方法や、App Store Connectを使用した高度なApp Clip体験のワークフローを自動化する方法も紹介します。
リソース
関連ビデオ
WWDC21
WWDC20
-
ダウンロード
♪ ♪ こんにちは Charles Yingです App Clipの最新情報 へようこそ App Clipは Appの小さな一部分でして 軽くて速く 見つけやすいので 必要なものを必要なときに 素早く手に入れられます メッセージやマップ SpotlightやSafari 世界中のQRコードや App Clipコードから見つけられます その一例がToastです ToastのApp ClipはQRコードで 卓上での会計ができます レシートに印刷された 既存のQRからApp Clipが 開くようにも設定しました App Clipの導入により ユーザチェックアウトが早まり 多くのユーザがフルAppの インストールを選択しました 既存フローにApp Clipを 組み込み 顧客の体験を 効率化することができます ユーザがApp Clipをより 活用できるようにする新機能と App Clipの開発をより 簡単にする機能を紹介します App Clipのサイズ制限 から始めましょう App Clipは 軽くて速い スピード重視の設計です 即座に感じられるには 小さくあることが必要です ワイヤレスネットワークが 2年前よりも高速になり iOS 16では新たに App Clipのサイズを 最大15MBまでに できるようになりました そのため 理想の体験を 構築する余地が広がります App Clipのミニマムバージョンを iOS16に設定すると新制限が適用され 10MB以下に設定すれば iOS15以前と互換性が保たれます いずれにせよ App Clip 起動後 常に追加リソースを ダウンロード することができます 素晴らしい体験には やはりスピードが重要です ユーザが常に高速回線の ある場所にいるとは限らず App Clipの最適化は これまで同様に重要です App Clip最適化については 「軽量かつ高速なApp Clipの構築」 をご覧ください 次に App Clip体験や ユニバーサルリンクが 正しく設定されているか確認する シンプルな新しいツールを紹介します その仕組みはこうです iPhoneかiPadの「Developer」設定 から「App Clips Testing」 の「Diagnostics」 を選択します ここで URLを入力します デバイスをXcodeに接続し Developer設定をオンにできます iOSは URLの設定を 確認します 正しく設定されていれば 緑色のボックスが示されます
問題があれば この画面が 表示され 何が起こったかを 正確に知ることができます Safariバナーが表示されない あるいは App Clipではなく Webページに移動するなどの 問題を解決できます 各診断には 設定ステップをさらに 詳しく説明するドキュメントへの リンクがあります これで 何が問題かを 正確に把握ができます
App Clip診断では 物理コード Safari iMessageを使用する App Clip体験を確認し ユニバーサルリンク関連 ドメインの設定も確認します このシンプルな新ツールで 正しい設定が簡単になります
次に CloudKitです
AppがiCloudの保存データに アクセスする構成です これまでCloudKitは App Clipには未対応でした App Clipはデータやリソースを 読むのにサーバを使う場合がありました
iOS 16からは CloudKitのパブリック データベースに格納された データやリソースも 読み込むことができます CloudKitが提供する 全パワーとスケールを使って AppとApp Clipの両方で 同じコードを共有し 同じデータにアクセスできます 2つの重要な違いは App Clipは パブリックデータベースから 読み取りは可能ですが CloudKitへの書きこみはできません App Clipは クラウドドキュメントと キーバリューストアも使えません App Clipが使われなくなった際 iOSがAppとそのデータを 削除するという ユーザへの約束を守る為です
XcodeでApp Clipのために CloudKitを有効にするには App Clipターゲットの Signing and Capabilitiesタブを開き App Clipに使用させたい CloudKitコンテナを選択します このCloudKitコンテナは フルAppと共有する 新規または 既存のコンテナです App ClipからCloudKitの パブリックデータを読む例です コンテナの識別子で CKContainerを作成し publicCloudDatabase プロパティにアクセスします 次に パブリックデータベースから 必要なレコードを取得します
次に キーチェーンの移行です 認証トークンや 決済情報などの機密情報を App ClipからフルAppに 転送したい場合 App Clipはこのデータを 共有Appグループコンテナ に格納することになります iOSは ユーザがアップグレード する際 このデータを保存します
フルAppはApp グループのコンテナを読み取り その情報をキーチェーンに 保存します
しかし このような情報を 安全に保管するためには キーチェーンが 最適なのです 今年から ユーザがAppを インストールすると App Clipのキーチェーンに 保存されているアイテムが App ClipからAppに 転送されるようになりました これでキーチェーンに 安全なアイテムを保存し Appインストール時に 移動されることが可能になります 共有キーチェーングループと iCloudキーチェーンには未対応です これによりApp Clipを 使わなくなった後も キーチェーン情報が残らない ユーザへの約束が守られます
キーチェーンにログイン情報を保存 読み取る例を紹介します AppそしてApp Clipともに コードは同じです SecItemAddでキーチェーンに 新アイテムを追加できます SecItemCopyMatchingで Keychainからアイテムを出します アイテムにラベルを追加し App Clipによって 保存されたアイテムである事を フルAppが識別可能にします
最後に App Clip Experiences APIです App Clipが成長するにつれ より高度なApp Clip体験が必要になり それぞれが独自の情報や 位置情報を持つ形となります これらをすべて簡単に 追加 更新する方法が必要です App Store Connectには このワークフローを自動化する App Clip Experiences Web API が用意されています このAPIを利用して 高度なApp Clip体験を 追加する例を見てみましょう まず App Clipの リソースIDを取得します 次に ヘッダ画像を アップロードします 最後に 高度な App Clip体験の作成です まず App Clipの リソースIDを探します アイテムIDとApp ClipバンドルID を指定しWeb APIを呼び出します そのレスポンスから 後のため App ClipリソースIDを保存 次に 高度なApp Clip体験のため ヘッダ画像をアップロードします ヘッダ画像のリソースIDを 次ステップのため保存します 最後に App ClipリソースIDと ヘッダ画像IDで 高度なApp Clip体験を 作成ができます 記入する箇所は 3つあります: attributes relationships そしてincludedです
attributes辞書には アクション名 カテゴリと言語 高度な App Clip体験の リンクなどの 情報を追加します 高度な体験がマップと関連 する場合 place辞書を追加します place辞書には 一致する マップビジネスの場所名 マップアクション マップ座標を追加します relationships辞書には App ClipリソースIDと ヘッダ画像IDを追加します included辞書では ローカライズされた タイトルとサブタイトルを 高度なApp Clip体験 のために追加します 以上です! このApp Store Connect APIを使用すれば 高度なApp Clip体験の作成を 完全に自動化できます App Store Connectについて より詳しく知りたい方は App Store Connect の自動化 WWDC 2020で発表された App Store Connectの 新機能について をご覧ください 最後に 新しいApp Clipの サイズ制限により 理想的な体験を構築する 余地が増えました App Clip診断ツールは App Clipとユニバーサルリンクの 構成を端から端まで 把握できる優れものです CloudKitとキーチェーンは 多くのコードをAppと共有し 開発を容易にします App Clip Experiences APIは 高度なApp Clip体験を 管理するための ワークフローを自動化します App Clipの 開発については WWDC 2021で発表された App Clipの新機能 をご確認ください デベロッパのみなさんが素晴らしい App Clipを作ってくれました とてもクリエイティブです! これら新機能がApp Clipの 構築に役立ちますように ご視聴ありがとう ございました!
-
-
4:41 - Read your CloudKit public database from your App Clip
// Read your CloudKit public database from your App Clip let container = CKContainer.default() let publicDatabase = container.publicCloudDatabase let record = try await publicDatabase.record(for: CKRecord.ID(recordName: "A928D582-9BB6-E9C5-7881-E4EAF615E0CD")) if let title = record["Title"] as? String, let description = record["Description"] as? String { print(“Fetched a food item from CloudKit: \(title) \(description)") }
-
6:03 - Read and Write from your App Clip's keychain
// Write authentication token to App Clip keychain let addSecretsQuery: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecValueData as String: "smoothie-secret".data(using: .utf8), kSecAttrLabel as String: "foodsample-appclip" ] SecItemAdd(addSecretsQuery as CFDictionary, nil) // Read authentication token from app or App Clip var readSecretsQuery: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecReturnAttributes as String: true, kSecAttrLabel as String: "foodsample-appclip", kSecReturnData as String: true ] var secretsCopy: AnyObject? SecItemCopyMatching(readSecretsQuery as CFDictionary, &secretsCopy)
-
7:10 - Get your App Clip resource ID
# Get the App Clip resource ID GET /v1/apps/1234567890/appClips?filter[bundleId]=com.example.foodsample.Clip # Response { "data": { "attributes": { "bundleId": "com.example.foodsample.Clip" }, "id": "726ad1bb-3e1b-40eb-a986-d8a9897e4f1e" } }
-
7:25 - Upload a header image for the advanced App Clip experience
# Upload a header image for the advanced App Clip experience POST /v1/appClipAdvancedExperienceImages { "data": { "type": "appClipAdvancedExperienceImages", "attributes": { "fileName": "Hero_image_US.png", "fileSize": 43500 } } } # Response { "data": { "attributes": "..." "id": "91c52741-832b-48a2-8935-1797655edbe7" } }
-
7:34 - Create the advanced App Clip experience
# Create advanced App Clip experience POST /v1/appClipAdvancedExperiences { "data": { "type": "appClipAdvancedExperiences", "attributes": { "action": “OPEN", "businessCategory": "FOOD_AND_DRINK", "defaultLanguage": "EN", "isPoweredBy": true, "link": "https://fruta.example.com/restauraunt/simply_salad", "place": { "names": [ "Caffe Macs" ], "mapAction": "RESTAURANT_ORDER_FOOD", "displayPoint": { "coordinates": { "latitude": 37.33611, "longitude": -122.00731 }, "source": "CALCULATED" } } }, "relationships": { "appClip": { "data": { "type": "appClip", "id": "726ad1bb-3e1b-40eb-a986-d8a9897e4f1e" } }, "headerImage": { "data": { "type": "appClipAdvancedExperienceImages", "id": "91c52741-832b-48a2-8935-1797655edbe7" } } }, "included": { "type": "appClipAdvancedExperienceLocalizations", "attributes": { "language": "EN", "subtitle": "Fresh salad every day", "title": "Simply Salad" } } } }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。