skip to Main Content

When we use a dynamic link from Firebase and it leads the user to install the application, after the installation in the PlayStore it is presenting only the uninstall button, where the expected behavior is that it presents the open button as well.

This only happens when installing via a dynamic link configured from the Firebase console.

Please help me to know what is causing this erroneous behavior, this is because it harms the experience of the new user who installs the application.

About discard tests, I tried with a version uploaded to the store that worked before and is having the same error, but if possible I will be attentive to review some configuration.

the dinaymc link is configured from the firebase console.

example when install from dynamic link

2

Answers


  1. i was facing the same issue as you mentioned i just cleared the cache of play store and it fixed the issue.
    but i think it’s the bug from google side not from developer side.

    Login or Signup to reply.
  2. I had a similar problem. Only the uninstall button appears in the store.

    This only happened when the dynamic links had parameters directly in the link. The solution that I found together with my team was to transform all parameter data into json and then transform them into a base64 and pass that base64 in the link.

    That way it worked normally, I just had to convert the base64 to json when it arrives in the app.

    I hope you understand, I don’t know English very well.

    Example:

    (Old link)
    https://example.page.link/hSH85XP7o6Afan1Q6
    -> After load -> https://example.page.link/?code=MTUzMzYw

    (new link)
    https://example.page.link/6AFi -> After load -> https://example.page.link/eyJjb2RlIjoiT0RBNCIsImdyb3VwdHJhaW5pbmciOiJNek0zT0E9PSJ9

    Base64 = eyJjb2RlIjoiT0RBNCIsImdyb3VwdHJhaW5pbmciOiJNek0zT0E9PSJ9

    When converted the base64 becomes a JSON with the code

    /// Data dynamic link in Flutter
    Future<void> handleDeepLink(Uri deepLink) async {
      dynamic code, groupTraining;
        Codec<String, String> stringToBase64 = utf8.fuse(base64);
        String data =
            (deepLink.pathSegments.isNotEmpty) ? deepLink.pathSegments[0] : "";
      String stringDecoded = stringToBase64.decode(data);
      Map<String, dynamic> dataDecoded =
            (stringDecoded.isNotEmpty) ? jsonDecode(stringDecoded) : {};
      code = dataDecoded['code'];
      groupTraining = dataDecoded['grouptraining'];
    
      ...
    }
    

    Attention: according to the documentation it is wrong to use the dynamic link directly in the final link, so if you debug the link you will see that it has a warning, but it works that way.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search