Puoi creare Dynamic Links brevi o lunghi con l'API Firebase Dynamic Links Builder. Questa API accetta un valore Dynamic Link lungo o un oggetto contenente parametri Dynamic Link 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.
Configura Firebase e l'SDK Dynamic Links
Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Add Packages (File > Aggiungi pacchetti).
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
- Scegli la raccolta Dynamic Links.
- Aggiungi il flag
-ObjC
alla sezione Altri flag del linker delle impostazioni di build del target. - Per un'esperienza ottimale con Dynamic Links, ti consigliamo di attivare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app. Puoi selezionare la libreria senza raccolta dell'IDFA o con raccolta dell'IDFA. Consulta le nostre domande frequenti sull'organizzazione più recente dei moduli in Google Analytics per l'SDK Firebase.
- Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk.git
Ora, esegui alcuni passaggi di configurazione:
- Nella console Firebase, apri la sezione Dynamic Links.
-
Se non hai ancora accettato i termini di servizio e impostato un prefisso URI per il tuo Dynamic Links, fallo quando ti viene richiesto.
Se hai già un prefisso URI Dynamic Links, prendine nota. Devi fornirlo quando crei Dynamic Links in modo programmatico.
- Consigliato: specifica i pattern URL consentiti nei link diretti e nei link di fallback. In questo modo, impedisci a terze parti non autorizzate di creare Dynamic Links che reindirizzano dal tuo dominio a siti che non controlli. Consulta Consentire pattern URL specifici.
-
Assicurati che l'ID App Store e il prefisso dell'ID app siano specificati nelle impostazioni dell'app. Per visualizzare e modificare le impostazioni dell'app, vai alla pagina Impostazioni del tuo progetto Firebase e seleziona la tua app per iOS.
Verifica che il progetto Firebase sia configurato correttamente per utilizzare Dynamic Links nella tua app per iOS aprendo il file
apple-app-site-association
ospitato sul tuo dominio Dynamic Links. Firebase pubblicherà il fileapple-app-site-association
dalla radice del dominio e dalla sottodirectory.well-known
. Ad 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 dell'ID app e all'ID bundle della tua app. Ad esempio:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
Se la proprietà
details
è vuota, verifica di aver specificato il prefisso dell'ID app. Tieni presente che il prefisso ID app potrebbe non corrispondere all'ID team.
Aggiungi Firebase alla tua app
- Importa il modulo
FirebaseCore
nel tuoUIApplicationDelegate
, nonché tutti gli altri moduli Firebase utilizzati dal delegato dell'app. Ad esempio, per utilizzare Cloud Firestore e Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configura un'istanza condivisa
FirebaseApp
nel metodoapplication(_:didFinishLaunchingWithOptions:)
del delegato dell'app:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se utilizzi SwiftUI, devi creare un delegato dell'applicazione e collegarlo
alla struttura
App
tramiteUIApplicationDelegateAdaptor
oNSApplicationDelegateAdaptor
. Devi anche disattivare lo swizzling del delegato dell'app. Per ulteriori informazioni, consulta le istruzioni per SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
Utilizzare la console Firebase
Se vuoi generare un singolo Dynamic Link, ad esempio a scopo di test o per consentire al tuo team di marketing di creare facilmente un link da utilizzare in un post sui social media, il modo più semplice è visitare la Firebaseconsole e crearne uno manualmente seguendo il modulo passo passo.
Utilizzare l'API iOS Builder
Puoi utilizzare l'API iOS Builder per creare Dynamic Links dai parametri o per abbreviare un Dynamic Link lungo.
Creare un Dynamic Link dai parametri
Per creare un Dynamic Link, crea un nuovo oggetto DynamicLinkComponents
e specifica i parametri Dynamic Link impostando le proprietà corrispondenti dell'oggetto. Poi, recupera il link lungo dalla proprietà url
dell'oggetto o il link breve chiamando shorten()
.
Il seguente esempio minimo crea un intent Dynamic Link per
https://www.example.com/my-page
che si apre con la tua app per iOS su
iOS e l'app com.example.android
su Android:
Swift
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)")
Objective-C
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 breve Dynamic Link, crea un DynamicLinkComponents
allo stesso modo, quindi chiama shorten()
.
La creazione di un link breve richiede una chiamata di rete, quindi anziché restituire direttamente
il link, shorten()
accetta un gestore di completamento, che
viene chiamato al termine della richiesta. Ad esempio:
Swift
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[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, gli Dynamic Links brevi vengono generati con suffissi di link di 17 caratteri che
rendono estremamente improbabile che qualcuno possa indovinare un Dynamic Link valido. Se, per
il tuo caso d'uso, non c'è alcun problema se qualcuno indovina un link breve,
potresti preferire generare suffissi che siano solo abbastanza lunghi da essere
univoci, cosa che puoi fare impostando la proprietà
dynamicLinkComponentsOptions
:
Swift
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)") }
Objective-C
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); }];
Parametri Dynamic Link
Puoi utilizzare l'API Dynamic Link Builder per creare Dynamic Links con uno qualsiasi dei parametri supportati. Per informazioni dettagliate, consulta il riferimento API.
L'esempio seguente crea un Dynamic Link con diversi parametri comuni impostati:
Swift
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)")
Objective-C
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);
Puoi impostare i parametri Dynamic Link con i seguenti oggetti e proprietà:
DynamicLinkComponents | |
---|---|
link |
Il link che verrà aperto dall'app. Specifica un URL che la tua app può gestire, in genere i contenuti o il payload dell'app, che avvia una logica specifica dell'app (ad esempio l'accredito di un coupon all'utente o la visualizzazione di una schermata di benvenuto). Questo link deve essere un URL ben formattato, codificato correttamente, utilizzare HTTP o HTTPS e non può essere un altro link dinamico. |
domainURIPrefix | Il prefisso URL di 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 link da aprire quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installazione dell'app dal Play Store quando l'app non è installata, ad esempio aprire la versione web mobile dei contenuti o visualizzare una pagina promozionale per la tua app. |
minimumVersion | 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 eseguire l'upgrade dell'app. |
DynamicLinkIOSParameters | |
---|---|
appStoreID | L'ID App Store della tua app, utilizzato per indirizzare gli utenti all'App Store quando l'app non è installata |
fallbackURL | Il link da aprire quando l'app non è installata. Specifica questa opzione per eseguire un'azione diversa dall'installazione dell'app dall'App Store quando l'app non è installata, ad esempio aprire la versione web mobile dei contenuti o visualizzare una pagina promozionale per la tua app. |
customScheme | Lo schema URL personalizzato della tua app, se è definito in modo diverso dall'ID bundle dell'app |
iPadFallbackURL | Il link da aprire sugli iPad quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installazione dell'app dall'App Store quando l'app non è installata, ad esempio aprire la versione web dei contenuti o visualizzare una pagina promozionale per la tua app. |
iPadBundleID | L'ID bundle dell'app per iOS da utilizzare sugli iPad per aprire il link. L'app deve essere collegata al tuo progetto dalla pagina Panoramica della console Firebase. |
minimumAppVersion | Il numero di versione della versione minima della tua app che può aprire il link. Questo flag viene passato alla tua app quando viene aperta e l'app deve decidere cosa farne. |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | Se impostato su "1", salta la pagina di anteprima dell'app quando viene aperto Dynamic Link e reindirizza invece all'app o allo store. La pagina di anteprima dell'app (attivata per impostazione predefinita) può indirizzare in modo più affidabile gli utenti alla destinazione più appropriata quando aprono Dynamic Links nelle app. Tuttavia, se prevedi che un Dynamic Link venga aperto solo nelle app che possono aprire Dynamic Links in modo affidabile senza questa pagina, puoi disattivarla con questo parametro. Questo parametro influirà sul comportamento di Dynamic Link solo su iOS. |
DynamicLinkSocialMetaTagParameters | |
---|---|
titolo | Il titolo da utilizzare quando Dynamic Link viene condiviso in un post sui social. |
descriptionText | La descrizione da utilizzare quando Dynamic Link viene condiviso in un post sui social. |
imageURL | L'URL di un'immagine correlata a questo link. L'immagine deve essere di almeno 300 x 200 px e inferiore a 300 KB. |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
source medium campaign term content |
Parametri di Google Play Analytics. Questi parametri
(utm_source , utm_medium ,
utm_campaign , utm_term , utm_content )
vengono passati al Play Store e aggiunti al payload del link.
|
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
providerToken affiliateToken campaignToken |
Parametri di analisi di iTunes Connect. Questi parametri (pt ,
at , ct ) vengono trasmessi all'App Store. |
Accorciare un Dynamic Link lungo
Per abbreviare un Dynamic Link lungo, passa il Dynamic Link lungo a
shortenURL(url:options:)
insieme a un
oggetto DynamicLinkComponentsOptions
se vuoi generare un
link con un suffisso breve:
Swift
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Objective-C
[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); }];
Specificare uno schema URL personalizzato per Dynamic Links
Per impostazione predefinita, Dynamic Links utilizza l'identificatore del bundle 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 utilizzano già uno schema di URL personalizzato per altri scopi potrebbero voler utilizzare lo stesso schema di URL personalizzato anche per il proprio Dynamic Links. Se ti trovi in questa situazione, puoi specificare un diverso schema URL per il tuo Firebase Dynamic Links seguendo questi passaggi:
- Quando configuri l'app, assicurati di specificare lo schema URL predefinito da utilizzare per l'applicazione
prima di configurare l'istanza condivisa di
FirebaseApp
:Swift
Nota: questo prodotto Firebase non è disponibile per i 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 }
Objective-C
Nota: questo prodotto Firebase non è disponibile per i 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; }
- Ogni volta che crei un Dynamic Link, devi specificare lo schema URL personalizzato utilizzato dalla tua
app. Puoi farlo tramite la console Firebase, impostando
customScheme
nell'API Builder, specificando il parametroius
nell'URL o inviando il parametroiosCustomScheme
all'API REST.
Passaggi successivi
Ora che hai creato Dynamic Links, devi configurare l'app per ricevere Dynamic Links e indirizzare gli utenti alla posizione corretta nell'app dopo l'apertura.
Per ricevere Dynamic Links nella tua app, consulta la documentazione per iOS, Android, C++ e Unity.