Add parameter to Firebase Dynamic Links

前端 未结 2 1402
孤城傲影
孤城傲影 2020-12-01 23:08

I want to let the user share a product from my app by clicking a button and sending other potential users links like

www.myapp.com/offer/123

there, \"123\"

相关标签:
2条回答
  • 2020-12-01 23:24

    You need to use long deep link to send parameters.

    Example:

    1) link for opening the app by google play testing url:

    https://xx.page.link/?link=https://xx.com/invitation/?id=2&apn=com.xx.app&afl=https://play.google.com/apps/testing/com.xx.app
    

    2) receving the parameter:

           FirebaseDynamicLinks.getInstance()
                .getDynamicLink(getIntent())
                .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
                    @Override
                    public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
                        Uri deepLink = null;
                        if (pendingDynamicLinkData != null) {
                            deepLink = pendingDynamicLinkData.getLink();
                            String paramValue = deepLink.getQueryParameters("id").get(0)); // it will get "2" as a value
                        }
    
                    }
                })
                .addOnFailureListener(this, new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.w("Splash", "getDynamicLink:onFailure", e);
                    }
                });
    
    0 讨论(0)
  • 2020-12-01 23:26

    SHORT ANSWER: Using query parameters instead of path variables you could use the getQueryParameter method from the Uri object returned by pendingDynamicLinkData.getLink()


    What i've been doing is using query parameters instead of path variables.

    Instead of sending http://www.myapp.com/offer/123, i'm sending something like http://www.myapp.com/?offer=123

    To add parameters dynamically i'm just concatenating strings: "http://www.myapp.com/?offer=" + myValue

    This URL is in turn a query parameter of the dynamic link created in firebase:

    String url = "https://YourDynamicLinkIdentifier.app.goo.gl/?link=https://myapp.com?offer=" 
    + myOfferVar 
    + "&apn=com.your.apn"; // << Dont forget to change this too
    

    And this resulting URL is the one i send to the url shortener.

    Then in the callback onSuccess(PendingDynamicLinkData pendingDynamicLinkData) call getLink() of pendingDynamicLinkData as you're already doing.

    Now that you have a Uri object, you can easily get the parameter by calling the method getQueryParameter("offer").

    if (pendingDynamicLinkData != null) {
         deepLink = pendingDynamicLinkData.getLink();
         String offerKey = deepLink.getQueryParameter("offer");
    

    NOTE: In case you still prefer to use the path variable, you could get the last segment of the Uri path. See How to obtain the last path segment of an uri

    0 讨论(0)
提交回复
热议问题