Impostazione di un dominio personalizzato per Dynamic Links

Puoi avere un maggiore controllo sul branding dei tuoi Dynamic Links' utilizzando il tuo dominio anziché un page.link sottodominio. 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 è chiamata prefisso URL, e contiene sia il dominio Dynamic Link personalizzato sia un prefisso del percorso. Dovrai fornire un prefisso URL quando crei Dynamic Links.

Per configurare un dominio personalizzato, devi disporre dell'autorizzazione Editor o Proprietario per il tuo progetto Firebase.

Utilizzare il dominio web per Dynamic Links

Puoi utilizzare lo stesso dominio per i tuoi Dynamic Links e per le tue pagine web, i link universali e i link alle app, ma in questo caso devi assicurarti che gli URL dei tuoi Dynamic Link non siano in conflitto con gli URL web. Quando configuri Dynamic Links per utilizzare un determinato prefisso URL, tutti gli URL che iniziano con quel prefisso vengono trattati come Dynamic Links, quindi non puoi utilizzare gli URL con quel prefisso per rimandare a contenuti ospitati ordinari.

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

Pertanto, i seguenti Dynamic Links (e i link brevi equivalenti) non funzioneranno come previsto perché gli URL specificati dal parametro link iniziano con il Dynamic Link prefisso URL, 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 in formato esteso (e i link brevi equivalenti) possono funzionare, perché i prefissi URL non sono in conflitto con gli 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

Configurare un dominio personalizzato nella console Firebase

In genere, puoi configurare un dominio personalizzato completamente nella Firebase console. Per farlo:

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

  2. Apri la pagina Dynamic Links della console Firebase.

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

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

  4. Solo iOS: nel file Info.plist del progetto Xcode, crea una chiave chiamata FirebaseDynamicLinksCustomDomains e impostala sui prefissi URL di 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 manualmente un dominio personalizzato

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

Per farlo:

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

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

  2. Esegui l'aggiornamento all'ultima versione della Firebase CLI (v6.5.0 o successive).

  3. Configura il sito Hosting per Dynamic Links nel file firebase.json del 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 assetlinks.json e apple-app-site-association file quando vengono richiesti.

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

      A differenza delle regole che riscrivono i percorsi negli 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 sopra riportata, puoi creare Dynamic Links con prefissi URL come i seguenti esempi:

    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 sopra riportata, puoi creare Dynamic Links come il seguente esempio:

    https://your-domain/link-suffix

  4. Esegui il deployment delle modifiche alla configurazione Hosting:

    firebase deploy --only hosting

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

  5. Solo iOS: nel file Info.plist del progetto Xcode, crea una chiave chiamata FirebaseDynamicLinksCustomDomains e impostala sui prefissi URL di Dynamic Links della tua 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, presta particolare attenzione all' ordine di priorità dell'hosting.

  • Assicurati che il prefisso URL Dynamic Links non sia in conflitto con le configurazioni di hosting con priorità più alta (ad esempio, i contenuti statici ospitati hanno sempre la priorità sulle riscritture).
  • All'interno dell'attributo rewrites, la risposta Hosting rispetterà la regola specificata dal primo 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 hanno la precedenza. Un utente finale vedrà index.html anziché il Dynamic Link. Allo stesso modo, se hai contenuti statici in your-domain/source-path/link-suffix, l'utente finale vedrà i contenuti statici anziché il Dynamic Link.

Se vuoi utilizzare lo stesso branding sia per Dynamic Links sia per Hosting, valuta una delle seguenti opzioni per il prefisso URL di 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 links.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
    } ]
    
firebase.json