Skonfiguruj niestandardową domenę dla Dynamic Links

Możesz mieć większą kontrolę nad marką Linków dynamicznych, używając własnej domeny zamiast subdomeny page.link . Dzięki domenom niestandardowym możesz tworzyć linki dynamiczne, jak w poniższych przykładach:

https://example.com/link-suffix
https://example.com/links/promos/link-suffix
https://links.example.com/link-suffix
https://ex.amp.le/link-suffix

Część adresu URL przed link-suffix jest nazywana prefiksem adresu URL i zawiera zarówno niestandardową domenę łącza dynamicznego, jak i prefiks ścieżki. Podczas tworzenia łączy dynamicznych konieczne będzie podanie prefiksu adresu URL.

Skonfigurowanie domeny niestandardowej wymaga uprawnień edytora lub właściciela w projekcie Firebase.

Korzystanie z domeny internetowej dla linków dynamicznych

Możesz używać tej samej domeny dla swoich linków dynamicznych i swoich stron internetowych, linków uniwersalnych i linków do aplikacji, ale jeśli to zrobisz, musisz zadbać o to, aby adresy URL linków dynamicznych nie kolidowały z adresami internetowymi. Gdy skonfigurujesz łącza dynamiczne do używania określonego prefiksu adresu URL, wszystkie adresy URL zaczynające się od tego prefiksu są traktowane jako łącza dynamiczne, więc nie możesz używać adresów URL z tym prefiksem do kierowania na zwykłą hostowaną zawartość.

Na przykład, jeśli chcesz utworzyć link dynamiczny do zasobu https://example.com/my-resource (strona internetowa, link uniwersalny lub link do aplikacji), nie możesz użyć https://example.com/ jako prefiks adresu URL linków dynamicznych, ponieważ spowodowałoby to traktowanie https://example.com/my-resource jako linku dynamicznego. Zamiast tego musisz użyć prefiksu adresu URL z inną domeną lub innym prefiksem ścieżki.

Dlatego poniższe długie linki dynamiczne (i równoważne im krótkie linki) nie będą działać zgodnie z oczekiwaniami, ponieważ adresy URL określone przez parametr link zaczynają się od prefiksu adresu URL linku dynamicznego, https://example.com/ :

 https://example.com/?link=https://example.com/my-resource
 https://example.com/?link=https://example.com/resources/my-resource

Ale następujące długie linki dynamiczne (i równoważne krótkie linki) mogą działać, ponieważ prefiksy adresów URL nie kolidują z adresami URL link :

 https://link.example.com/?link=https://example.com/my-resource
 https://example.com/links/?link=https://example.com/my-resource
 https://ex.amp.le/?link=https://example.com/my-resource

Skonfiguruj domenę niestandardową w konsoli Firebase

Zazwyczaj domenę niestandardową można całkowicie skonfigurować w konsoli Firebase. Aby to zrobić:

  1. Jeśli nie skonfigurowałeś Hostingu Firebase dla swojego projektu, otwórz stronę Hosting w konsoli Firebase, kliknij Rozpocznij i przejrzyj instrukcje konfiguracji. W tej chwili nie musisz wykonywać wskazanych kroków.

  2. Otwórz stronę Dynamic Links w konsoli Firebase.

  3. Jeśli nie korzystałeś wcześniej z linków dynamicznych, kliknij Rozpocznij . W przeciwnym razie kliknij Dodaj prefiks adresu URL z menu rozwijanego.

    Następnie zakończ pracę kreatora konfiguracji, określając domenę i prefiks ścieżki, których chcesz użyć, gdy zostaniesz o to poproszony.

  4. Tylko iOS : w pliku Info.plist projektu Xcode utwórz klucz o nazwie FirebaseDynamicLinksCustomDomains i ustaw go na prefiksy adresów URL linków dynamicznych aplikacji. Na przykład:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/link</string>
      <string>https://example.com/promos</string>
    </array>
    

Ręcznie skonfiguruj domenę niestandardową

W niektórych sytuacjach, na przykład gdy masz już domenę niestandardową skonfigurowaną dla Linków dynamicznych i chcesz dodać kolejną domenę lub gdy dodajesz domenę już połączoną z witryną hostingową, musisz ręcznie skonfigurować domenę niestandardową.

Aby to zrobić:

  1. Połącz swoją domenę z Hostingiem Firebase, jeśli jeszcze tego nie zrobiłeś.

    Konfigurowanie domeny za pomocą Firebase Hosting obejmuje utworzenie pliku konfiguracyjnego firebase.json w lokalnym katalogu projektu.

  2. Zaktualizuj do najnowszej wersji Firebase CLI (wersja 6.5.0 lub nowsza).

  3. Skonfiguruj witrynę hostingową pod kątem linków dynamicznych w pliku firebase.json projektu. Jeśli Twój projekt obejmuje wiele witryn, pamiętaj o skonfigurowaniu witryny połączonej z domeną, której chcesz używać.

    • Ustaw appAssociation na AUTO . Przy tym ustawieniu Hosting dynamicznie generuje pliki assetlinks.json i apple-app-site-association na żądanie.

    • Określ prefiksy ścieżek, których chcesz używać dla linków dynamicznych, ustawiając reguły przepisywania z dynamicLinks ustawionym na true . Żądania kierowane do tych ścieżek są przekazywane do łączy dynamicznych.

      W przeciwieństwie do reguł, które przepisują ścieżki do adresów URL, reguły ponownego zapisywania linków dynamicznych nie mogą zawierać wyrażeń regularnych.

      Jeśli masz wiele reguł przepisywania dla swojej witryny, pamiętaj, że Hosting wykonuje pierwszą regułę przepisywania, która pasuje do żądania.

    Na przykład:

    "hosting": {
      // ...
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/promos/**",
          "dynamicLinks": true
        },
        {
          "source": "/links/share/**",
          "dynamicLinks": true
        }
      ]
    }
    

    W powyższej konfiguracji możesz tworzyć linki dynamiczne z prefiksami adresów URL, jak w poniższych przykładach:

    https://your-domain/promos/link-suffix
    https://your-domain/links/share/link-suffix
    

    Jeśli używasz tej domeny tylko dla linków dynamicznych, możesz użyć ścieżki źródłowej /** do tworzenia linków dynamicznych bez prefiksu ścieżki:

    {
      "source": "/**",
      "dynamicLinks": true
    }
    

    Korzystając z powyższej reguły, możesz tworzyć linki dynamiczne, jak w poniższym przykładzie:

    https://your-domain/link-suffix

  4. Wdróż zmiany w konfiguracji hostingu:

    firebase deploy --only hosting

    (opcjonalnie) Możesz sprawdzić wdrożoną zawartość firebase.json za pomocą Hosting REST API .

  5. Tylko iOS : w pliku Info.plist projektu Xcode utwórz klucz o nazwie FirebaseDynamicLinksCustomDomains i ustaw go na prefiksy adresów URL linków dynamicznych aplikacji. Na przykład:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/promos</string>
      <string>https://example.com/links/share</string>
    </array>
    

Priorytetowa kolejność linków dynamicznych i hostingu

W przypadku linków dynamicznych należy zwrócić szczególną uwagę na kolejność priorytetów hostingu .

  • Upewnij się, że prefiks adresu URL linków dynamicznych nie powoduje konfliktu z konfiguracjami hostingu o wyższym priorytecie (na przykład hostowana zawartość statyczna ma zawsze wyższy priorytet niż przepisywanie).
  • W ramach atrybutu rewrites odpowiedź Hostingu będzie zgodna z regułą określoną przez pierwszy glob source , który przechwyci żądaną ścieżkę .

Na przykład, jeśli skonfigurujesz link dynamiczny dla your-domain / source-path / link-suffix ale masz też zawartość statyczną pod your-domain / source-path /index.html , zawartość statyczna ma pierwszeństwo. Użytkownik końcowy zobaczy index.html zamiast łącza dynamicznego. Podobnie, jeśli masz zawartość statyczną w your-domain / source-path / link-suffix , użytkownik końcowy zobaczy zawartość statyczną zamiast łącza dynamicznego.

Jeśli chcesz używać tej samej marki zarówno dla linków dynamicznych, jak i hostingu, rozważ jedną z następujących opcji prefiksu adresu URL linków dynamicznych:

  • Ustaw atrybut source tak, aby pasował do prefiksu ścieżki. Na przykład, jeśli masz niestandardową domenę example.com , Twoja reguła przepisywania może wyglądać następująco:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Skonfiguruj subdomenę, która ma być używana w przypadku linków dynamicznych, a następnie ustaw atrybut source tak, aby pasował do tej subdomeny. Na przykład, jeśli masz subdomenę links.example.com , Twoja reguła przepisywania może wyglądać następująco:

    // Domain is links.example.com
    "rewrites": [ {
      "source": "/**",  // Dynamic Links start with "https://links.example.com/"
      "dynamicLinks": true
    } ]