Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Note

This is a template that should be used to document each feature. It’s meant to be easy, not prescriptive - change it at will!

Table of contents

Table of Contents

Definition

Status

Status
titleNOT STARTED
Status
colourBlue
titleIN DESIGN
Status
colourBlue
titleIN DEVELOPMENT
Status
colourGreen
titleCOMPLETED

RBIberia Owner

RBI Owner

❓ Open questions

Info

We need to constantly make this section empty.

Requirements

Problem statement

The lack of integration with Firebase Dynamic Links SDK can limit the accessibility of the application's content, reduce the effectiveness of advertising and marketing campaigns, and restrict content sharing, which can have a negative impact on our customers, sales, and profitability.

Possible solution:

To implement the integration with Firebase Dynamic Links SDK into our platform.

https://firebase.google.com/docs/dynamic-links?hl=es-419

Acceptance criteria

  1. SDK Integration:

    1. The Firebase Dynamic Links SDK must be successfully integrated into our platform following the guidelines provided in the official documentation (https://firebase.google.com/docs/dynamic-links).

    2. The integration should be compatible with the latest version of the SDK and maintain backward compatibility with previous versions to ensure a smooth transition and functionality across different app versions.

  2. Dynamic Link Generation:

    1. The platform should be able to generate Firebase Dynamic Links programmatically for different content pages, such as product details, promotions, or specific app screens.

    2. The generated Dynamic Links should include relevant parameters, such as campaign details, source, medium, and any additional custom parameters required for tracking and analysis.

  3. Deep Linking:

    1. The integration should enable deep linking functionality, allowing users to be directed to specific content within the app when clicking on a Firebase Dynamic Link.

    2. Deep links should accurately navigate users to the intended content, ensuring a seamless and intuitive user experience.

Acceptance Criteria considerations after tech discovery

  • SDK Integration:

    • Firebase Dynamic Links doesn’t need to be integrated with Android. It automatically works in this platform for the links generated in Firebase. The main concern here is to redirect the user to the Play Store when the app is not installed on the device. When the user has the app, it already opens it in the configured path.

    • Firebase Dynamic Links need to be integrated only in IOS. It requires this dependency to read the URL content. This is necessary to redirect the user to the configured URL/path in the installed app. However, when the user doesn’t have it the app installed, it automatically needs to redirect the user to the Apple store.

  • Dynamic Link Generation:

    • The generation of the Dynamic links must be done in the Firebase Console. No efforts are required in terms of implementation.

    • The relevant parameters are part of the URL configuration in Firebase Console / Dynamic links.

  • Deep linking

    • Implementations of deep links must work for both Android (app links) and IOS (universal links), the configured URL is capable of opening the app in the configured path. This functionality is not dependent on Firebase Dynamic Links. Any deep links provider can generate the links (even though they can be generated manually, e.g.: https://www.popeyes.es/menu and it should be open natively.

Consolidated Acceptance Criteria:

  • Dynamic links:

    • If the mobile customer clicks on a dynamic link and has installed the app, then it goes to the app directly. Otherwise, he/she is redirected to the store (Apple store or Play store) and gets the app.

    • The web customer (Desktop or mobile devices) accesses the webpage directly in the browser, but:

      • If the user types the dynamic link on Safari on iPhone, a page with a button is displayed, then it goes to the app.

  • Deep links:

    • If the mobile customer clicks on a deep link and has installed the app, then it goes to the app directly. Otherwise, he/she is redirected to the respective content within the website.

    • The web customer (Desktop or mobile devices) accesses the webpage directly in the browser, but:

      • If the user types the deep link on the browser using a mobile device, he/she is redirected to the respective content within the website. If it is on an iPhone, a banner is displayed indicating to use the app.

  • Push notification:

    • Both dynamic links and deep links can be sent by push notification message on Salesforce. However, there is a limitation to include a longer link on the field on Salesforce. For this reason, it is recommended the use of dynamic links instead. Regarding the behavior when the user taps the push notification message, the result is the same as the user clicks on the link by marketing email campaign.

  • UTM parameters:

    • UTM parameters can be included on deep links or dynamic links. Currently, there is only attention to using UTM for the creation of the dynamic link.

  • In-app messages:

    • This feature is out of this scope, but it will be implemented on another story: Feature - In-app

Success metrics

🤔 Assumptions

Dynamic Links FAQ:

Firebase Dynamic Links is no longer recommended for new projects. In the future, the Dynamic Links service will shut down, but you will have at least 12 months from the announcement date to migrate. Around the end of Q2-2023, we will announce more information.

We launched Dynamic links about 7 years ago to make URLs more powerful (for example, dynamically changing the destination of a link based on run-time conditions) at a time when there were different degrees of support on various OSes and platforms. We remain committed to the importance of enabling app teams of all sizes to improve their deep linking experiences and are investigating how to help developers adopt technologies such as App Links, and Universal Links. → At least 1 sprint for refinement + 1 sprint for dev

How long will I have to migrate?

We want to make the migration as smooth as possible, so you will have a minimum of 12 months to fully migrate. We will share more details around the end of Q2-2023.

Will new and existing links continue to work?

Yes, your new and existing links will continue to work until the Dynamic Links service is shut down. Around the end of Q2-2023, we will provide more information on the long term plan for Firebase Dynamic Links.

Solution

  1. Set up Firebase

  2. Install the required dependencies with capacitor / android / ios:

    1. Official Firebase plugin for capacitor

    2. There are a few alternatives of plugins to install in capacitor

      1. https://github.com/chemerisuk/cordova-plugin-firebase-dynamiclinks

      2. https://github.com/Pantrist-dev/capacitor-firebase-dynamic-links

      3. https://github.com/Turnoutt/capacitor-firebase-dynamic-links

  3. Configure Firebase in the project

    1. Open the capacitor.config.json file in your project's root directory.

    2. Add the @capacitor/firebase plugin to the plugins section:

      Code Block
      jsonCopy code"plugins": {
        "SplashScreen": {
          "launchShowDuration": 0
        },
        "@capacitor/firebase": {
          "scopes": ["dynamic-links"]
        }
      }
  4. Implement Firebase Dynamic Links handling in EMEA app:

    • Open the file where you want to handle Firebase Dynamic Links (e.g., a component or service).

    • Import the necessary dependencies

    • Register a listener to handle incoming dynamic links:

    • Implement the function to handle the received deep link. Extract the query parameters or other information from the deep link URL and perform the desired actions in your app.

      • Import the necessary dependencies in your TypeScript file:

        Code Block
        typescriptCopy codeimport { Plugins } from '@capacitor/core';
        const { FirebaseDynamicLinks } = Plugins;
        
      • Register a listener to handle incoming dynamic links:

        Code Block
        typescriptCopy codeimport { useEffect } from 'react';
        
        useEffect(() => {
          const handleDynamicLink = async () => {
            const { data } = await FirebaseDynamicLinks.addListener('deepLinkOpen', (data: any) => {
              const deepLink = data.deepLink;
              // Process the deep link as needed
              processDeepLink(deepLink);
            });
          };
        
          handleDynamicLink();
        }, []);
  5. Generate Dynamic Links

    • In the Firebase Console, go to the Dynamic Links section.

    • Follow the provided instructions to create a new Dynamic Link and customize the link parameters such as the domain, deep link URL, and optional query parameters.

    • Once created, you can use the generated Dynamic Link URL in your app, website, or marketing materials.

Info

High Level Estimate = 1 dev sprint with technical refinement and QA tests / No UX efforts needed.

Scenarios

Info

Note: these are high-level scenarios that must pass testing before we can release the feature. They should also be used to drive design. Note that we do not specify user interface details in these steps - that is deliberate so that we focus on the process and not on the UI since the UI can change throughout design and development.

Scenario 1: xxx

Steps

Expected results

Do this

Expect that

Design

Figma design here: [insert link]

Development

We have worked to cover all scenarios listed on the acceptance criteria. Currently, we have to implement the remaining items:

Jira Legacy
serverSystem JIRA
serverId255417eb-03fa-3e2f-a6ba-05d325fec50d
keyIBFEC-824

Jira Legacy
serverSystem JIRA
serverId255417eb-03fa-3e2f-a6ba-05d325fec50d
keyIBFEC-596

Jira Legacy
serverSystem JIRA
serverId255417eb-03fa-3e2f-a6ba-05d325fec50d
keyIBFEC-801

Release