Impostazione di un dominio personalizzato per Dynamic Links

Puoi avere un maggiore controllo sul branding di Dynamic Links utilizzando il tuo dominio anziché un sottodominio page.link. Con i domini personalizzati, puoi creare Dynamic Links come i seguenti esempi:

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

La parte dell'URL prima di link-suffix è denominata prefisso URL e contiene sia il dominio Dynamic Link personalizzato e un prefisso del percorso. Dovrai fornire un prefisso URL quando crei Dynamic Links.

La configurazione di un dominio personalizzato richiede l'autorizzazione Editor o Proprietario per il progetto Firebase.

Utilizzo del dominio web per Dynamic Links

Puoi utilizzare lo stesso dominio per Dynamic Links e le tue pagine web, i link universali e i link app, ma in questo caso devi assicurarti che gli URL di Dynamic Links non entrino in conflitto con gli URL web. Quando configuri Dynamic Links in modo da utilizzare un determinato prefisso URL, tutti gli URL che iniziano con quel prefisso vengono trattati come Dynamic Links, pertanto non puoi utilizzare gli URL con quel prefisso per indirizzare a contenuti ospitati normali.

Ad esempio, se vuoi creare un Dynamic Link per la risorsa https://example.com/my-resource (una pagina web, un link universale o un link dell'app), non puoi utilizzare https://example.com/ come prefisso URL Dynamic Links, perché in questo modo https://example.com/my-resource viene trattato come un Dynamic Link. Devi invece utilizzare un prefisso URL con un dominio o un prefisso di percorso diverso.

Pertanto, il seguente Dynamic Links nel formato lungo (e i link brevi equivalenti) non funzionerà come previsto perché gli URL specificati dal parametro link iniziano con il prefisso URL Dynamic Link, https://example.com/:

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

Tuttavia, i seguenti Dynamic Links nel formato lungo (e i link brevi equivalenti) possono funzionare, perché i prefissi degli URL non sono in conflitto con gli URL di 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

Configurare un dominio personalizzato nella console Firebase

In genere, puoi configurare un dominio personalizzato completamente nella console Firebase. A questo scopo:

  1. Se non hai configurato Firebase Hosting per il tuo progetto, apri la pagina Hosting della console Firebase, fai clic su Inizia e segui le istruzioni di configurazione. Al momento non è necessario completare i passaggi indicati.

  2. Apri la pagina Dynamic Links della console Firebase.

  3. Se non hai mai utilizzato Dynamic Links, fai clic su Inizia. In caso contrario, fai clic su Aggiungi prefisso URL dal menu a discesa.

    Quindi, completa la configurazione guidata specificando il dominio e il prefisso di percorso che vuoi utilizzare quando richiesto.

  4. Solo per iOS: nel file Info.plist del progetto Xcode, crea una chiave denominata FirebaseDynamicLinksCustomDomains e impostala sui prefissi URL Dynamic Links della tua app. Ad esempio:

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

Configurare un dominio personalizzato manualmente

In alcuni casi, ad esempio quando hai già configurato un dominio personalizzato per Dynamic Links e vuoi aggiungerne un altro o quando aggiungi un dominio già collegato a un sito Hosting, devi configurare il dominio personalizzato manualmente.

Per farlo:

  1. Collega il tuo dominio a Firebase Hosting se non l'hai ancora fatto.

    La configurazione del dominio con Firebase Hosting include la creazione del file di configurazione firebase.json nella directory del progetto locale.

  2. Esegui l'aggiornamento alla versione più recente della CLI Firebase (v6.5.0 o successiva).

  3. Configura il tuo sito Hosting per Dynamic Links nel file firebase.json del tuo progetto. Se il tuo progetto ha più siti, assicurati di configurare il sito collegato al dominio che vuoi utilizzare.

    • Imposta appAssociation su AUTO. Con questa impostazione, Hosting genera dinamicamente i file assetlinks.json e apple-app-site-association quando vengono richiesti.

    • Specifica i prefissi dei percorsi che vuoi utilizzare per Dynamic Links impostando le regole di riscrittura con dynamicLinks impostato su true. Le richieste a questi percorsi vengono proxy a Dynamic Links.

      A differenza delle regole che riscrivono i percorsi agli URL, le regole di riscrittura Dynamic Link non possono contenere espressioni regolari.

      Se hai più regole di riscrittura per il tuo sito, tieni presente che Hosting esegue la prima regola di riscrittura che corrisponde alla richiesta.

    Ad esempio:

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

    Con la configurazione precedente, puoi creare Dynamic Links con prefissi URL come gli esempi riportati di seguito:

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

    Se utilizzi questo dominio solo per Dynamic Links, puoi utilizzare un percorso di origine /** per creare Dynamic Links senza prefisso del percorso:

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

    Con la regola precedente, puoi creare Dynamic Links come nell'esempio seguente:

    https://your-domain/link-suffix

  4. Esegui il deployment delle modifiche alla configurazione di Hosting:

    firebase deploy --only hosting

    (Facoltativo) Puoi controllare i contenuti firebase.json di cui è stato eseguito il deployment utilizzando l'API REST Hosting.

  5. Solo per iOS: nel file Info.plist del progetto Xcode, crea una chiave denominata FirebaseDynamicLinksCustomDomains e impostala sui prefissi URL Dynamic Links dell'app. Ad esempio:

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

Ordine di priorità per Dynamic Links e Hosting

Per Dynamic Links, tieni particolarmente conto dell'ordine di priorità dell'hosting.

  • Assicurati che il prefisso dell'URL Dynamic Links non entri in conflitto con configurazioni di hosting di priorità superiore (ad esempio, i contenuti statici ospitati hanno sempre la priorità sulle riscritture).
  • Nell'attributo rewrites, la risposta Hosting rispetterà la regola specificata dal primo pattern glob source che acquisisce il percorso richiesto.

Ad esempio, se configuri un Dynamic Link per your-domain/source-path/link-suffix ma hai anche contenuti statici in your-domain/source-path/index.html, i contenuti statici avranno la precedenza. Un utente finale vedrà index.html anziché Dynamic Link. Analogamente, se hai contenuti statici su your-domain/source-path/link-suffix, l'utente finale vedrà questi contenuti anziché Dynamic Link.

Se vuoi utilizzare lo stesso branding sia per Dynamic Links che per Hosting, valuta una delle seguenti opzioni per il prefisso dell'URL Dynamic Links:

  • Imposta l'attributo source in modo che corrisponda a un prefisso del percorso. Ad esempio, se hai un dominio personalizzato example.com, la regola di riscrittura potrebbe essere:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • Configura un sottodominio da utilizzare per Dynamic Links, quindi imposta l'attributo source in modo che corrisponda a quel sottodominio. Ad esempio, se hai un sottodominio dilinks.example.com, la regola di riscrittura potrebbe essere:

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