Konfigurowanie domeny niestandardowej na potrzeby Linków dynamicznych

Jeśli chcesz mieć większą kontrolę nad elementami marki w linkach dynamicznych, użyj własnej domeny zamiast subdomeny page.link. Dzięki domenom niestandardowym możesz tworzyć linki dynamiczne jak w przykładach poniżej:

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 elementem link-suffix nosi nazwę prefiksu adresu URL i zawiera zarówno niestandardową domenę linku dynamicznego, jak i prefiks ścieżki. Podczas tworzenia linków dynamicznych musisz podać prefiks adresu URL.

Aby skonfigurować domenę niestandardową, musisz mieć uprawnienia edytującego lub właściciela w projekcie Firebase.

Używanie domeny internetowej w linkach dynamicznych

Możesz użyć tej samej domeny dla linków dynamicznych i stron internetowych, linków uniwersalnych i linków aplikacji, ale jeśli to zrobisz, pamiętaj, aby adresy URL w linkach dynamicznych nie kolidowały z adresami URL. Gdy skonfigurujesz linki dynamiczne tak, by korzystały z konkretnego prefiksu adresu URL, wszystkie adresy URL, które zaczynają się od tego prefiksu, będą traktowane jako linki dynamiczne, więc nie można używać adresów URL z tym prefiksem do wskazywania zwykłych treści hostowanych.

Jeśli na przykład chcesz utworzyć link dynamiczny do zasobu https://example.com/my-resource (strony internetowej, uniwersalnego linku lub linku aplikacji), nie możesz użyć prefiksu https://example.com/ w adresie URL linków dynamicznych, ponieważ spowodowałoby to, że element https://example.com/my-resource byłby traktowany jako link dynamiczny. Zamiast tego musisz użyć prefiksu adresu URL z inną domeną lub innym prefiksem ścieżki.

Z tego powodu poniższe długie linki dynamiczne (i ich odpowiedniki) nie będą działać zgodnie z oczekiwaniami, ponieważ adresy URL określone w parametrze 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

Poniższe długie linki dynamiczne (i odpowiednie krótkie linki) mogą jednak zadział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

Zwykle możesz w pełni skonfigurować domenę niestandardową w konsoli Firebase. Aby to zrobić:

  1. Jeśli nie masz skonfigurowanego Hostingu Firebase dla swojego projektu, otwórz stronę Hostowanie w konsoli Firebase, kliknij Rozpocznij i postępuj zgodnie z instrukcjami konfiguracji. W tej chwili nie musisz wykonywać wskazanych czynności.

  2. Otwórz stronę Linki dynamiczne w konsoli Firebase.

  3. Jeśli nie korzystasz jeszcze z Linków dynamicznych, kliknij Rozpocznij. W przeciwnym razie w menu kliknij Dodaj prefiks adresu URL.

    Następnie ukończ kreator konfiguracji, podając domenę i prefiks ścieżki, których chcesz użyć, gdy pojawi się taka prośba.

  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 swojej aplikacji. Przykład:

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

Ręczne konfigurowanie domeny niestandardowej

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

W tym celu:

  1. Połącz swoją domenę z Hostingiem Firebase, jeśli nie zostało to jeszcze zrobione.

    Skonfigurowanie domeny w Hostingu Firebase obejmuje utworzenie pliku konfiguracji firebase.json w katalogu projektu lokalnego.

  2. Zaktualizuj interfejs wiersza poleceń Firebase do najnowszej wersji (6.5.0 lub nowszej).

  3. Skonfiguruj linki dynamiczne w witrynie Hostingu w pliku firebase.json projektu. Jeśli Twój projekt obejmuje wiele witryn, pamiętaj, aby skonfigurować witrynę połączoną 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ć w Linkach dynamicznych, ustawiając reguły przepisywania z dynamicLinks na true. Żądania do tych ścieżek są przesyłane przez serwer proxy do linków dynamicznych.

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

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

    Przykład:

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

    Korzystając z powyższej konfiguracji, możesz tworzyć linki dynamiczne z prefiksami adresów URL, jak w następujących przykładach:

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

    Jeśli używasz tej domeny tylko na potrzeby linków dynamicznych, możesz użyć ścieżki źródłowej /**, by utworzyć linki dynamiczne bez prefiksu ścieżki:

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

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

    https://your-domain/link-suffix

  4. Wdróż zmiany konfiguracji Hostingu:

    firebase deploy --only hosting

    (Opcjonalnie) Wdrożoną treść firebase.json możesz sprawdzić za pomocą interfejsu API hostowania REST.

  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 swojej aplikacji. Przykład:

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

Priorytetowe traktowanie linków dynamicznych i hostingu

W przypadku Linków dynamicznych szczególnie pamiętaj o kolejności priorytetu hostingu.

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

Jeśli np. skonfigurujesz link dynamiczny dla strony your-domain/source-path/link-suffix, ale w adresie your-domain/source-path/index.html masz też treści statyczne, zawartość statyczna będzie miała pierwszeństwo. Użytkownikowi będzie się wyświetlać atrybut index.html zamiast linku dynamicznego. Podobnie, jeśli w witrynie your-domain/source-path/link-suffix znajdują się treści statyczne, użytkownik zobaczy treść statyczną, a nie link dynamiczny.

Jeśli chcesz używać tej samej marki zarówno w Linkach dynamicznych, jak i Hostingu, rozważ zastosowanie jednej z tych opcji prefiksu adresu URL linków dynamicznych:

  • Ustaw atrybut source tak, aby pasował do prefiksu ścieżki. Jeśli np. masz niestandardową domenę example.com, reguła przepisywania może wyglądać tak:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Skonfiguruj subdomenę, której chcesz używać na potrzeby linków dynamicznych, a następnie ustaw wartość atrybutu source tak, by pasowała do tej subdomeny. Jeśli na przykład masz subdomenę links.example.com, reguła przepisywania może wyglądać tak:

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