Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Crea collegamenti dinamici su iOS

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Puoi creare collegamenti dinamici brevi o lunghi con l'API Firebase Dynamic Links Builder. Questa API accetta un collegamento dinamico lungo o un oggetto contenente parametri di collegamento dinamico e restituisce URL come i seguenti esempi:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Prerequisiti

Prima di iniziare, assicurati di aggiungere Firebase al tuo progetto iOS .

Usa Swift Package Manager per installare e gestire le dipendenze di Firebase.

  1. In Xcode, con il progetto dell'app aperto, vai su File > Aggiungi pacchetti .
  2. Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Scegli la libreria Collegamenti dinamici.
  5. Per un'esperienza ottimale con Dynamic Links, ti consigliamo di abilitare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app. È possibile selezionare la libreria senza raccolta IDFA o con raccolta IDFA.
  6. Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.

Ora, esegui alcuni passaggi di configurazione:

  1. Nella console Firebase, apri la sezione Collegamenti dinamici .
  2. Se non hai già accettato i termini di servizio e impostato un prefisso URI per i tuoi collegamenti dinamici, fallo quando richiesto.

    Se hai già un prefisso URI di Dynamic Links, prendine nota. Devi fornirlo quando crei collegamenti dinamici a livello di codice.

  3. Consigliato : specifica i pattern URL consentiti nei link diretti e nei link di riserva. In questo modo, impedisci a parti non autorizzate di creare collegamenti dinamici che reindirizzano dal tuo dominio a siti che non controlli. Consulta Consenti pattern URL specifici .
  4. Assicurati che l'ID App Store dell'app e il prefisso dell'ID app siano specificati nelle impostazioni dell'app. Per visualizzare e modificare le impostazioni della tua app, vai alla pagina Impostazioni del tuo progetto Firebase e seleziona la tua app iOS.

    Verifica che il tuo progetto Firebase sia configurato correttamente per utilizzare Dynamic Links nella tua app iOS aprendo il file apple-app-site-association che è ospitato sul tuo dominio Dynamic Links. Firebase servirà il file di apple-app-site-association dalla radice del dominio e dalla sottodirectory .well-known . Per esempio:

        https://example.com/apple-app-site-association
        https://example.com/.well-known/apple-app-site-association
        

    Se la tua app è connessa, il file apple-app-site-association contiene un riferimento al prefisso ID app e all'ID bundle della tua app. Per esempio:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    Se la proprietà dei details è vuota, ricontrolla di aver specificato il prefisso dell'ID app. Tieni presente che il prefisso dell'ID app potrebbe non essere uguale al tuo ID team.

Aggiungi Firebase alla tua app

  1. Importa il modulo FirebaseCore nel tuo UIApplicationDelegate , così come qualsiasi altro modulo Firebase utilizzato dal delegato dell'app. Ad esempio, per utilizzare Cloud Firestore e l'autenticazione:

    Veloce

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Obiettivo-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configura un'istanza condivisa FirebaseApp , in genere nell'inizializzatore App o nel metodo dell'applicazione del delegato application(_:didFinishLaunchingWithOptions:) :

    Veloce

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Obiettivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Usa la console Firebase

Se desideri generare un singolo collegamento dinamico, sia a scopo di test, sia per consentire al tuo team di marketing di creare facilmente un collegamento che può essere utilizzato in qualcosa come un post sui social media, il modo più semplice sarebbe visitare la console Firebase e crearne uno manualmente seguendo il modulo passo passo.

Usa l'API di iOS Builder

Puoi utilizzare l'API di iOS Builder per creare collegamenti dinamici dai parametri o per abbreviare un collegamento dinamico lungo.

Per creare un collegamento dinamico, creare un nuovo oggetto DynamicLinkComponents e specificare i parametri del collegamento dinamico impostando le proprietà corrispondenti dell'oggetto. Quindi, ottieni il collegamento lungo dalla proprietà url dell'oggetto o ottieni il collegamento breve chiamando shorten() .

L'esempio minimo seguente crea un collegamento dinamico lungo a https://www.example.com/my-page che si apre con la tua app iOS su iOS e l'app com.example.android su Android:

Veloce

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix)
linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Obiettivo-C

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                               domainURIPrefix:dynamicLinksDomainURIPrefix];
linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];

NSLog(@"The long URL is: %@", linkBuilder.url);

Per creare un collegamento dinamico breve, crea un DynamicLinkComponents allo stesso modo, quindi chiama shorten() .

La creazione di un collegamento breve richiede una chiamata di rete, quindi invece di restituire direttamente il collegamento, shorten() accetta un gestore di completamento, che viene chiamato quando la richiesta viene completata. Per esempio:

Veloce

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Obiettivo-C

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Per impostazione predefinita, i collegamenti dinamici brevi vengono generati con suffissi di collegamento di 17 caratteri che rendono estremamente improbabile che qualcuno possa indovinare un collegamento dinamico valido. Se, per il tuo caso d'uso, non c'è nulla di male in qualcuno che riesce a indovinare un collegamento breve, potresti preferire generare suffissi che sono lunghi solo quanto necessario per essere univoci, cosa che puoi fare impostando la proprietà dynamicLinkComponentsOptions :

Veloce

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
linkBuilder.options = DynamicLinkComponentsOptions()
linkBuilder.options.pathLength = .short
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Obiettivo-C

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init];
linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort;
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Puoi utilizzare l'API Dynamic Link Builder per creare collegamenti dinamici con uno qualsiasi dei parametri supportati. Vedere il riferimento API per i dettagli.

L'esempio seguente crea un collegamento dinamico con diversi parametri comuni impostati:

Veloce

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix)

linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.iOSParameters.appStoreID = "123456789"
linkBuilder.iOSParameters.minimumAppVersion = "1.2.3"

linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")
linkBuilder.androidParameters.minimumVersion = 123

linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut",
                                                                       medium: "social",
                                                                       campaign: "example-promo")

linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters()
linkBuilder.iTunesConnectParameters.providerToken = "123456"
linkBuilder.iTunesConnectParameters.campaignToken = "example-promo"

linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters()
linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link"
linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!"
linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg"

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Obiettivo-C

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                         domainURIPrefix:dynamicLinksDomainURIPrefix];

linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.iOSParameters.appStoreID = @"123456789";
linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3";

linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];
linkBuilder.androidParameters.minimumVersion = 123;

linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc]
                                   initWithSource:@"orkut"
                                           medium:@"social"
                                         campaign:@"example-promo"];

linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init];
linkBuilder.iTunesConnectParameters.providerToken = @"123456";
linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo";

linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init];
linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link";
linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!";
linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg";

NSLog(@"The long URL is: %@", linkBuilder.url);

È possibile impostare i parametri di Dynamic Link con i seguenti oggetti e proprietà:

Componenti DynamicLink
collegamento

Il link che si aprirà la tua app. Specifica un URL che l'app può gestire, in genere il contenuto o il payload dell'app, che avvia la logica specifica dell'app (ad esempio accreditando all'utente un coupon o visualizzando una schermata di benvenuto). Questo collegamento deve essere un URL ben formattato, codificato correttamente nell'URL, utilizzare HTTP o HTTPS e non può essere un altro collegamento dinamico.

dominioURIPrefisso Il tuo prefisso URL Dynamic Link, che puoi trovare nella console Firebase. Un dominio Dynamic Link è simile ai seguenti esempi:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
fallbackURL Il collegamento da aprire quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installare l'app dal Play Store quando l'app non è installata, ad esempio aprire la versione Web mobile del contenuto o visualizzare una pagina promozionale per la tua app.
versione minima Il versionCode della versione minima della tua app che può aprire il link. Se l'app installata è una versione precedente, l'utente viene indirizzato al Play Store per aggiornare l'app.
DynamicLinkIOSParameters
appStoreID L'ID dell'App Store della tua app, utilizzato per inviare gli utenti all'App Store quando l'app non è installata
fallbackURL Il collegamento da aprire quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installare la tua app dall'App Store quando l'app non è installata, ad esempio aprire la versione Web mobile del contenuto o visualizzare una pagina promozionale per la tua app.
schema personalizzato Lo schema URL personalizzato della tua app, se definito come qualcosa di diverso dall'ID bundle della tua app
URL di fallback dell'iPad Il link per aprire su iPad quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installare la tua app dall'App Store quando l'app non è installata, ad esempio aprire la versione web del contenuto o visualizzare una pagina promozionale per la tua app.
iPadBundleID L'ID bundle dell'app iOS da utilizzare su iPad per aprire il collegamento. L'app deve essere connessa al tuo progetto dalla pagina Panoramica della console Firebase.
versione minima dell'app Il numero di versione della versione minima dell'app che può aprire il collegamento. Questo flag viene passato alla tua app quando viene aperta e la tua app deve decidere cosa farne.
DynamicLinkNavigationInfoParameters
reindirizzamento forzato abilitato Se impostato su "1", salta la pagina di anteprima dell'app quando viene aperto il collegamento dinamico e reindirizza invece all'app o allo store. La pagina di anteprima dell'app (attivata per impostazione predefinita) può inviare in modo più affidabile gli utenti alla destinazione più appropriata quando aprono i collegamenti dinamici nelle app; tuttavia, se prevedi che un collegamento dinamico venga aperto solo in app che possono aprire collegamenti dinamici in modo affidabile senza questa pagina, puoi disabilitarlo con questo parametro. Questo parametro influenzerà il comportamento di Dynamic Link solo su iOS.
DynamicLinkSocialMetaTagParameters
titolo Il titolo da utilizzare quando il collegamento dinamico è condiviso in un post social.
descriptionText La descrizione da utilizzare quando il collegamento dinamico è condiviso in un post social.
URL dell'immagine L'URL di un'immagine correlata a questo collegamento. L'immagine deve essere di almeno 300 x 200 px e inferiore a 300 KB.
DynamicLinkGoogleAnalyticsParameters
fonte
medio
campagna
termine
contenuto
Parametri di analisi di Google Play. Questi parametri ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) vengono trasmessi al Play Store e aggiunti al payload del collegamento.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
campagnaToken
Parametri di analisi di iTunes Connect. Questi parametri ( pt , at , ct ) vengono passati all'App Store.

Per abbreviare un collegamento dinamico lungo, passa il collegamento dinamico lungo a shortenURL(url:options:) insieme a un oggetto DynamicLinkComponentsOptions se desideri generare un collegamento con un suffisso breve:

Veloce

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Obiettivo-C

Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
[FIRDynamicLinkComponents shortenURL:longLinkUrl
                             options:nil
                          completion:^(NSURL * _Nullable shortURL,
                                       NSArray<NSString *> * _Nullable warnings,
                                       NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];

Per impostazione predefinita, Dynamic Links utilizza l'identificatore del pacchetto dell'app come schema URL necessario per aprire l'applicazione. Ti consigliamo di mantenere questo valore predefinito per semplificare l'implementazione.

Tuttavia, gli sviluppatori che stanno già utilizzando uno schema URL personalizzato per altri scopi potrebbero voler utilizzare lo stesso schema URL personalizzato anche per i loro collegamenti dinamici. Se ti trovi in ​​questa situazione, puoi specificare uno schema URL diverso per i tuoi collegamenti dinamici Firebase seguendo questi passaggi:

  1. Quando configuri la tua app, assicurati di specificare lo schema URL predefinito che deve essere utilizzato dalla tua applicazione prima di configurare la tua istanza condivisa FirebaseApp :

    Veloce

    Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication
                       .LaunchOptionsKey: Any]?) -> Bool {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme
      FirebaseApp.configure()
    
      return true
    }
    

    Obiettivo-C

    Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst, tvOS o watchOS.
    - (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME;
      [FIRApp configure];
    
      return YES;
    }
  2. Ogni volta che crei un collegamento dinamico, dovrai specificare lo schema URL personalizzato utilizzato dalla tua app. Puoi farlo tramite la console Firebase, impostando customScheme nell'API Builder, specificando il parametro ius nell'URL o inviando il parametro iosCustomScheme all'API REST

Prossimi passi

Ora che hai creato collegamenti dinamici, devi configurare la tua app per ricevere collegamenti dinamici e inviare gli utenti nel posto giusto nell'app dopo che un utente li ha aperti.

Per ricevere collegamenti dinamici nella tua app, consulta la documentazione per iOS , Android , C++ e Unity .