Introducció

Els enllaços dinàmics de Firebase són URL intel·ligents que permeten una experiència d'usuari fluida en diverses plataformes. Aquests enllaços poden dirigir els usuaris a contingut específic dins de la teva aplicació, fins i tot si l'usuari encara no ha instal·lat l'aplicació. Quan un usuari fa clic en un enllaç dinàmic, se'l redirigeix a la botiga d'aplicacions per descarregar l'aplicació, i després de la instal·lació, l'usuari és redirigit automàticament al contingut específic.

Característiques clau

  • Profunditat de vinculació: Redirigeix els usuaris a contingut específic dins de l'aplicació.
  • Compatibilitat multiplataforma: Funciona tant en Android com en iOS.
  • Persistència de dades: Manté les dades a través de la instal·lació de l'aplicació.
  • Personalització: Personalitza l'experiència d'usuari amb paràmetres específics.

Configuració d'enllaços dinàmics

Pas 1: Configuració inicial a la consola de Firebase

  1. Accedeix a la consola de Firebase.
  2. Selecciona el teu projecte.
  3. Navega a la secció "Enllaços dinàmics".
  4. Fes clic a "Comença".
  5. Configura el domini per als enllaços dinàmics. Pots utilitzar un domini personalitzat o el domini proporcionat per Firebase.

Pas 2: Integració a l'aplicació

Android

  1. Afegeix les dependències necessàries al teu build.gradle:

    dependencies {
        implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
    }
    
  2. Configura l'intent filter al teu AndroidManifest.xml:

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:host="example.page.link"
                android:scheme="https" />
        </intent-filter>
    </activity>
    
  3. Gestiona l'enllaç dinàmic a la teva activitat:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                    }
    
                    // Gestiona l'enllaç profund aquí
                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "getDynamicLink:onFailure", e);
                }
            });
    }
    

iOS

  1. Afegeix les dependències necessàries al teu Podfile:

    pod 'Firebase/DynamicLinks'
    
  2. Configura l'URL scheme al teu Info.plist:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>com.example.ios</string>
            </array>
        </dict>
    </array>
    
  3. Gestiona l'enllaç dinàmic a la teva aplicació:

    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        guard let incomingURL = userActivity.webpageURL else {
            return false
        }
    
        let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamiclink, error) in
            guard error == nil else {
                print("Error handling dynamic link: \\(error!.localizedDescription)")
                return
            }
    
            if let dynamicLink = dynamiclink, let url = dynamicLink.url {
                // Gestiona l'enllaç profund aquí
            }
        }
    
        return linkHandled
    }
    

Creació d'enllaços dinàmics

Utilitzant la consola de Firebase

  1. Accedeix a la consola de Firebase.
  2. Selecciona el teu projecte.
  3. Navega a la secció "Enllaços dinàmics".
  4. Fes clic a "Nou enllaç dinàmic".
  5. Configura l'URL de l'enllaç dinàmic.
  6. Defineix els paràmetres de l'enllaç (com el contingut profund, la campanya, etc.).
  7. Genera l'enllaç.

Utilitzant l'API

Exemple en Android

Uri dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
    .setLink(Uri.parse("https://www.example.com/"))
    .setDomainUriPrefix("https://example.page.link")
    .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
    .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
    .buildDynamicLink()
    .getUri();

Log.d(TAG, "Dynamic Link: " + dynamicLink.toString());

Exemple en iOS

let link = URL(string: "https://www.example.com/")!
let dynamicLinksDomainURIPrefix = "https://example.page.link"

let components = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPrefix)

let iOSParams = DynamicLinkIOSParameters(bundleID: "com.example.ios")
components.iOSParameters = iOSParams

let androidParams = DynamicLinkAndroidParameters(packageName: "com.example.android")
components.androidParameters = androidParams

let dynamicLink = components.url
print("Dynamic Link: \(dynamicLink?.absoluteString ?? "")")

Exercicis pràctics

Exercici 1: Crear un enllaç dinàmic bàsic

  1. Configura un enllaç dinàmic a la consola de Firebase que redirigeixi a una pàgina específica de la teva aplicació.
  2. Implementa la gestió de l'enllaç dinàmic a la teva aplicació Android o iOS.
  3. Prova l'enllaç per assegurar-te que redirigeix correctament al contingut específic.

Exercici 2: Personalitzar l'enllaç dinàmic

  1. Crea un enllaç dinàmic amb paràmetres personalitzats (com campanyes de màrqueting).
  2. Implementa la lògica per gestionar aquests paràmetres a la teva aplicació.
  3. Prova l'enllaç per assegurar-te que els paràmetres es gestionen correctament.

Solucions

Solució a l'Exercici 1

Android

  1. Configura l'enllaç dinàmic a la consola de Firebase.

  2. Implementa la gestió de l'enllaç dinàmic:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                    }
    
                    if (deepLink != null) {
                        // Redirigeix a la pàgina específica
                        Intent intent = new Intent(MainActivity.this, SpecificPageActivity.class);
                        startActivity(intent);
                    }
                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "getDynamicLink:onFailure", e);
                }
            });
    }
    

iOS

  1. Configura l'enllaç dinàmic a la consola de Firebase.

  2. Implementa la gestió de l'enllaç dinàmic:

    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        guard let incomingURL = userActivity.webpageURL else {
            return false
        }
    
        let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamiclink, error) in
            guard error == nil else {
                print("Error handling dynamic link: \\(error!.localizedDescription)")
                return
            }
    
            if let dynamicLink = dynamiclink, let url = dynamicLink.url {
                // Redirigeix a la pàgina específica
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let specificPageVC = storyboard.instantiateViewController(withIdentifier: "SpecificPageViewController")
                self.window?.rootViewController?.present(specificPageVC, animated: true, completion: nil)
            }
        }
    
        return linkHandled
    }
    

Solució a l'Exercici 2

Android

  1. Crea un enllaç dinàmic amb paràmetres personalitzats.

  2. Implementa la lògica per gestionar aquests paràmetres:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent())
            .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                @Override
                public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                    Uri deepLink = null;
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.getLink();
                    }
    
                    if (deepLink != null) {
                        String campaign = deepLink.getQueryParameter("campaign");
                        if (campaign != null) {
                            // Gestiona la campanya
                            Log.d(TAG, "Campanya: " + campaign);
                        }
                    }
                }
            })
            .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w(TAG, "getDynamicLink:onFailure", e);
                }
            });
    }
    

iOS

  1. Crea un enllaç dinàmic amb paràmetres personalitzats.

  2. Implementa la lògica per gestionar aquests paràmetres:

    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        guard let incomingURL = userActivity.webpageURL else {
            return false
        }
    
        let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamiclink, error) in
            guard error == nil else {
                print("Error handling dynamic link: \\(error!.localizedDescription)")
                return
            }
    
            if let dynamicLink = dynamiclink, let url = dynamicLink.url {
                let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
                let campaign = components?.queryItems?.first(where: { $0.name == "campaign" })?.value
                if let campaign = campaign {
                    // Gestiona la campanya
                    print("Campanya: \\(campaign)")
                }
            }
        }
    
        return linkHandled
    }
    

Conclusió

Els enllaços dinàmics de Firebase són una eina poderosa per millorar l'experiència d'usuari i augmentar la retenció d'usuaris a través de la vinculació profunda. Amb la configuració adequada i la integració a la teva aplicació, pots dirigir els usuaris a contingut específic, fins i tot si encara no han instal·lat l'aplicació. Els exercicis pràctics proporcionats t'ajudaran a comprendre millor com crear i gestionar enllaços dinàmics, així com personalitzar-los per a diferents campanyes i necessitats.

Curs de Firebase

Mòdul 1: Introducció a Firebase

Mòdul 2: Autenticació de Firebase

Mòdul 3: Base de dades en temps real de Firebase

Mòdul 4: Cloud Firestore

Mòdul 5: Emmagatzematge de Firebase

Mòdul 6: Missatgeria en el núvol de Firebase

Mòdul 7: Analítica de Firebase

Mòdul 8: Funcions de Firebase

Mòdul 9: Monitoratge del rendiment de Firebase

Mòdul 10: Laboratori de proves de Firebase

Mòdul 11: Temes avançats de Firebase

© Copyright 2024. Tots els drets reservats