WWDC Quick Look 💓 By SwiftGGTeam
What's new in Universal Links

What's new in Universal Links

元の動画を見る

ハイライト

ユニバーサル リンクを使用すると、ユーザーは HTTPS リンクをクリックして、ブラウザではなくアプリを直接開くことができます。その中心的なメカニズムは次のとおりです: Web サーバーのルート ディレクトリまたは.well-knownディレクトリに 1 つ配置しますapple-app-site-association(AASA) ファイルは、どの URL パスをどのアプリで処理するかを宣言します。

主要内容

ユニバーサル リンクの目標は簡単です。同じ HTTPS リンクで Web コンテンツを表すことも、アプリ内の対応するページにユーザーを誘導することもできます。システムでは、アプリが Web サイトから提供される関連ドメインの権利を取得する必要があります。apple-app-site-association書類。アプリはどのドメイン名を信頼するかを宣言し、Web サイトはどのアプリがどのパスを処理できるかを宣言します。双方が連携して一連のセキュリティ アソシエーションを形成します。

2020年の問題は規模だ。ケータリング アプリは、数百の国、複数の言語、および複数の製品をサポートする場合があります。古い AASA ルーティング ルールが依存するもの*そして?マッチングに関しては、言語、地域、商品を組み合わせるとルールの数が急激に増えます。スピーチの例では、2 桁の言語コード、2 桁の地域コード、および 4 つの製品のみを考慮しています。パターンの数は 180 万に達し、27 MB 以上を占有します。

Apple はこのセッションで 3 つの機能を追加しました。まず、Universal Links が watchOS に拡張され、SwiftUI のサポートが得られます。2 番目に、AASA のcomponentsマッチングでは、大文字と小文字、Unicode、デフォルト値、および置換変数が追加され、より少ないルールで複雑なパスを表現します。3 番目に、関連ドメイン データは、Web サイトに直接接続されているデバイスから Apple CDN によってキャッシュおよび配布されるように変更され、インストール後の最初の可用性がより安定します。

これにより、デバッグの方法も変わります。開発および企業内配布では、テスト サーバーがパブリック ネットワークに公開される必要はありません。macOS Big Sur と iOS 14 では、開発とデバッグ用の開発者モードと、MDM 管理デバイス用のマネージド モードという代替モードが導入されています。開発者は特定のドメイン名に資格を追加できますmodeシステムが CDN をバイパスして制御対象サーバーに直接接続できるようにするためのクエリ項目。

詳細

ユニバーサルリンクスプラットフォーム入口

(00:21) ユニバーサル リンクは、Web ページとアプリの同じコンテンツを表す HTTP または HTTPS URL です。これを採用するには、アプリ内の関連ドメイン資格と Web サイト上の AASA JSON ファイルという 2 つの構成が必要です。カスタム URL スキームは推奨されなくなったため、Apple は、まだカスタム URL スキームを使用しているプロジェクトをできるだけ早く移行することを明示的に推奨しています。

App entitlement:
  Associated Domains -> applinks:example.com

Web server:
  /.well-known/apple-app-site-association
  or /apple-app-site-association

Association:
  entitlement names the web domain
  AASA names the app application identifier

キーポイント:

  • applinks:example.comこれはアプリ側の宣言であり、このアプリがこのドメイン名でユニバーサル リンクを処理する必要があることを示します。
  • apple-app-site-associationこれは、Web サイト側での宣言であり、どのパスをどのアプリに渡すかを記述します。
  • システムがアプリへのリンクを与える前に、資格と AASA が相互にポイントされている必要があります。
  • 逐語的には、AASA を Web サイトのルートに配置できるか、または.well-known目次。

(01:27) watchOS は 2020 年に追加された新しいプラットフォームです。WatchKit への入り口は UIKit や AppKit とは異なります。関連ドメインの権利は、それを含む WatchKit アプリではなく、WatchKit 拡張機能にも追加する必要があります。

UIKit incoming link:
  application:continueUserActivity:restorationHandler:

UIKit outgoing link:
  UIApplication.openURL

WatchKit incoming link:
  WKExtensionDelegate.handle(_ userActivity:)

WatchKit outgoing link:
  WKExtension.openSystemURL

キーポイント:

  • WKExtensionDelegate.handle(_ userActivity:)watchOS での受信ユニバーサル リンクの受信を担当します。
  • WKExtension.openSystemURLユニバーサル リンクは、watchOS アプリから別のアプリを開くために使用されます。
  • 対象のアプリがインストールされていない場合、watchOS はユーザーにペアリングされた iPhone に進むよう求めるプロンプトを表示します。
  • 使用UISceneiOS アプリは、単に実装するのではなく、シーン関連のデリゲート メソッドを実装する必要があります。UIApplicationDelegate方法。

AASA マッチング ルールを短くする

(05:14) 古いルールのサポート*そして?*0 個以上の文字に貪欲に一致します。?キャラクターに合わせて、?*少なくとも 1 つの文字を表します。iOS 13.5 および macOS Catalina 10.15.5 以降、components辞書も追加できるcaseSensitive: false、同じルールで大文字と小文字の変更をカバーできるようになります。

{
  "components": [
    {
      "/": "/sourdough?*",
      "caseSensitive": false
    }
  ]
}

キーポイント:

  • "/"このコンポーネントが URL パスと一致することを示します。
  • "/sourdough?*"へのパスが必要ですsourdoughが始まり、その後に少なくとも 1 つの文字が続きます。
  • "caseSensitive": false大文字と小文字を区別する一致をオフにします。
  • この機能は、ユーザーが手動で入力する場合、または外部チャネルによってリンクが生成される場合に、大文字と小文字の違いを修正するのに適しています。

(06:11) URL 自体は ASCII です。中国語やフランス語のアクセント付き文字などの Unicode コンテンツが含まれている場合、ブラウザでは通常、パーセント エンコーディングが表示されます。iOS 14 および macOS Big Sur の新機能percentEncoded: falseこれにより、AASA ルールが Unicode コード ポイントで照合されます。

{
  "defaults": {
    "caseSensitive": false,
    "percentEncoded": false
  },
  "components": [
    {
      "/": "/zh_CN/蚂蚁上树"
    },
    {
      "/": "/fr_CA/pâté"
    }
  ]
}

キーポイント:

  • "percentEncoded": falseルールに Unicode 文字を直接書き込ませます。
  • "defaults"置くことができますcomponents同じレベル、同じ人に与えるcomponents配列内のルールはデフォルト値を提供します。
  • "defaults"にも置くことができますdetails同じレベルで、このドメイン名のユニバーサル リンクに有効です。
  • これにより、重複キーが削減され、各パス ルールの真に異なる部分のみが保持されます。

置換変数を使用して組み合わせ爆発を圧縮する

(09:43) 置換変数は、このセッションの中核となる更新です。一連の文字列に名前を付けて変数にし、パス パターンでそれらを参照します。スピーチが組み込まれています$(lang)$(region)$(alpha)$(digit)変数を使用すると、開発者は次のことも可能になりますsubstitutionVariablesここで独自のビジネス変数を定義します。

{
  "applinks": {
    "substitutionVariables": {
      "food": ["sourdough", "baguette", "noodles", "dumplings"]
    },
    "details": [
      {
        "components": [
          {
            "/": "/$(lang)_$(region)/$(food)"
          }
        ]
      }
    ]
  }
}

キーポイント:

  • "food"はビジネス変数の名前で、値は一致が許可される製品のリストです。
  • $(lang)そして$(region)それぞれ Foundation からのシステム組み込み変数ですLocaleサポートされている言語と地域コード。
  • $(food)開発者が定義した参照変数。
  • 変数値には次の値を含めることができます?そして*ワイルドカードですが、他の変数を参照し続けることはできません。

(12:49) 変数は、正確な制御を放棄することを意味するものではありません。講演ではカナダ市場を例に挙げています。CA地域を除外し、カナダ用に別のメニューを定義します。地域的な例外、言語翻訳、Unicode の商品名は共存できます。

{
  "applinks": {
    "substitutionVariables": {
      "food": ["sourdough", "baguette", "noodles", "dumplings"],
      "Canadian food": ["poutine", "tourtière"]
    },
    "details": [
      {
        "defaults": {
          "percentEncoded": false
        },
        "components": [
          {
            "/": "/$(lang)_CA/$(food)",
            "exclude": true
          },
          {
            "/": "/$(lang)_CA/$(Canadian food)"
          },
          {
            "/": "/$(lang)_$(region)/$(food)"
          }
        ]
      }
    ]
  }
}

キーポイント:

  • "exclude": trueこのパターンに一致する URL は、このアプリによってユニバーサル リンクとして開かれないことを示します。
  • 除外ルールは、通常のメニューがカナダで引き続き有効になるのを防ぐために、カナダ固有のルールよりも前に配置されます。
  • "Canadian food"と組み合わせることができる別のビジネス変数です"food"重複する値があります。
  • tourtièreこのタイプのアクセント付き文字の値は、次によって異なります。percentEncoded: falseルールに直接記述することもできます。

CDN と代替モード

(16:31) iOS 14 および macOS Big Sur 以降、デバイスはアプリのインストール後に各 Web サイトから AASA を直接ダウンロードしなくなります。システムは、関連ドメインの Apple の CDN に接続します。CDN は、同時に複数の Web サイトから AASA を取得し、結果をキャッシュし、接続を通じてデータをデバイスに送信できます。

Before:
  device -> each associated web server -> AASA files

Starting with iOS 14 and macOS Big Sur:
  device -> Apple Associated Domains CDN -> cached AASA data

キーポイント:

  • CDN により、開発者のサーバーへのリクエストの数を減らすことができます。
  • デバイスは、単一の HTTP/2 接続を通じて複数のドメイン名の関連ドメイン データを取得できます。
  • ユニバーサル リンクは、ユーザーがアプリをインストールしたばかりの初回起動時に利用できる可能性が高くなります。
  • パブリック ネットワークからアクセスできないテスト サーバーには代替モードが必要です。

(18:37) 2 つの代替モードがあります。開発およびテスト用の開発者モードと、MDM プロファイルを通じてインストールされたアプリ用の管理モードです。開発者モードでは、ユーザーが積極的に有効にする必要があります。iOS、watchOS、tvOS の開発者設定で関連ドメインの開発をオンにします。 macOS のコマンド ラインからオンにします。

swcutil developer-mode -e true

キーポイント:

  • developer-modeは、そのまま与えられた macOS コマンドです。
  • オンにすると管理者パスワードまたは Touch ID が必要です。
  • 開発者モードはユーザーごとの操作です。
  • 開発署名されたアプリに対してのみ有効です。 App Store、TestFlight、および公証された Mac アプリでは、このモードを使用できません。

(21:23) アプリは、関連付けられたドメイン資格を通じてドメイン名が代替モードを使用するかどうかを選択します。クエリ項目名はmode、値はモードを指定します。開発者モードまたは管理モードを使用する場合、AASA を.well-knownディレクトリは、ドメイン名のルート ディレクトリにのみ配置することはできません。

applinks:www.example.com
applinks:dev.example.com?mode=developer
applinks:managed.example.com?mode=managed

キーポイント:

  • 最初の行は、CDN を使用する通常の Universal Links ドメイン名です。
  • ?mode=developer開発とテストに使用されるドメイン名。
  • ?mode=managedMDM 管理デバイスでのエンタープライズ展開向け。
  • これらのドメイン名は単なる例であり、実際のドメイン名はチーム独自の環境によって決定されます。

重要ポイント

国際ルーティングを統合する

何をすべきか: 製品ページ、コンテンツ ページ、およびイベント ページの URL ルールを AASA 変数テーブルに整理します。

実行する価値がある理由: 置換変数を使用すると、多数のパス パターンから言語、地域、ビジネスの列挙を抽出できるため、組み合わせによってルールの数が 2 倍になるのを防ぐことができます。

開始方法: まず、現在の URL に言語、地域、製品のディメンションをリストし、システムを構築します。$(lang)$(region)カスタム変数と組み合わせて使用​​しますexcludeサービスが提供できないエリアに対処します。

watchOS アプリにディープリンク エントリを追加する

手順: Watch アプリがレストラン、注文、チケット、またはコンテンツ詳細ページのユニバーサル リンクを受信できるようにします。

実行する価値がある理由: watchOS は、ユーザーがメッセージやメールのリンクからアクセスするときに監視を続けることができる軽量プロセスであるユニバーサル リンクをサポートするようになりました。

開始方法: 達成するには、関連ドメインの権利を WatchKit 拡張機能に追加します。WKExtensionDelegate.handle(_ userActivity:)、からNSUserActivityURL を解析し、対応するインターフェイスにジャンプします。

AASA プレリリース チェックのセットを構築する

対処方法: AASA のパス ルール、大文字と小文字、Unicode を確認してください。.well-known導入場所。

実行する価値がある理由: iOS 14 と macOS Big Sur は、Apple CDN を通じて関連ドメイン データを取得します。パブリック ネットワークへのアクセスとファイルの場所は、新しくインストールされたユーザーの最初のエクスペリエンスに直接影響します。

開始方法: 実際のドメイン名を含む最小限の AASA を準備します。caseSensitivepercentEncodeddefaultsおよび置換変数。開発環境用?mode=developer直接接続を利用します。

エンタープライズ アプリ用のマネージド モード ドメイン名を準備する

やるべきこと: 社内業務システムのユニバーサル リンクと MDM の導入プロセスを一緒に設計します。

実行する価値がある理由: マネージド モードは、MDM プロファイルを通じてインストールされたアプリ用であり、企業ネットワークまたは制御された環境内でのみアクセスできるドメイン名に適しています。

開始方法: ビジネス ドメイン名を追加します?mode=managed資格エントリ、AASA を入力.well-knownディレクトリに移動し、デバイス管理チームと協力してプロファイルのインストール パスを確認します。

関連セッション

  • App Clip の構成とリンク - App Clip の呼び出しとリンクの構成は、軽量エクスペリエンスにおけるユニバーサル リンクの直接拡張である関連ドメインに依存します。
  • SwiftUI の最新情報 - この Universal Links セッションでは、SwiftUI が 2020 年に Universal Links の受信をサポートする予定であることが明確に述べられています。
  • Web 開発者向けの新機能 - Safari と WebKit の Web 機能を補足し、Universal Links の Web エクスペリエンスと合わせて計画するのに適しています。
  • Apple デバイス管理の新機能 - 管理モードはエンタープライズ デバイス管理シナリオに属し、MDM 導入を理解することは、内部ユニバーサル リンクの設計に役立ちます。

コメント

GitHub Issues · utterances