it-swarm.com.de

Firebase Dynamic Link unterstützt benutzerdefinierte Parameter?

Ich schreibe eine App für eine Open Source-Konferenz.

Ursprünglich erhält jeder Teilnehmer einen anderen Link per E-Mail oder SMS

https://example.com/?token=fccfc8bfa07643a1ca8015cbe74f5f17

wenn Sie dann diesen Link verwenden, um die App zu öffnen, können wir anhand des Tokens wissen, welcher Benutzer welcher Teilnehmer ist.

Firebase veröffentlicht eine neue Funktion Dynamic Links in I/O 2016, die Benutzern eine bessere Benutzererfahrung bietet.

Ich hatte es versucht, aber ich finde keine Möglichkeit, die benutzerdefinierten Parameter (das Token) in dynamischen Links zu übergeben. Wie kann ich denselben Link mit anderen Parametern an meine Benutzer verwenden?

Vielen Dank.

15
Denny Huang

Ich glaube nicht, dass Sie die kurze URL: https://<my app>.app.goo.gl/Gk3m Verwenden können, es sei denn, Sie erstellen für jeden Benutzer einen, aber Sie können die lange URL: https://<my app>.app.goo.gl/?link=https://example.com/?token=fccfc8bfa07643a1ca8015cbe74f5f17 ...(add other parameters as needed) Verwenden und für jeden Benutzer ein neues Token festlegen.

Ich nehme an, Sie generieren die Token automatisch. In diesem Fall können Sie this verwenden, um die Links zu verkürzen.

22
diidu

Sie können jetzt mithilfe des Firebase-SDKs über die Funktion FirebaseDynamicLinks.getInstance().createDynamicLink(): https://firebase.google.com/docs/dynamic-links/Android/create kurze Links erstellen

Beispielcode:

Task shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
    .setLink(Uri.parse("https://example.com/"))
    .setDynamicLinkDomain("abc123.app.goo.gl")
    // Set parameters
    // ...
    .buildShortDynamicLink()
    .addOnCompleteListener(this, new OnCompleteListener() {
        @Override
        public void onComplete(@NonNull Task task) {
            if (task.isSuccessful()) {
                // Short link created
                Uri shortLink = task.getResult().getShortLink();
                Uri flowchartLink = task.getResult().getPreviewLink();
            } else {
                // Error
            }
        }
    });
5
Shirane85

Wenn Sie dynamische Verknüpfungen mit benutzerdefinierten Argumenten mit REST verwenden möchten, finden Sie hier ein Beispiel für eine Nutzlast:

{
  "dynamicLinkInfo": {
        "dynamicLinkDomain": "example.app.goo.gl",
        "link": "http://someurl.com?my_first_param=test&my_second_param=test2"
  },
  "suffix": {
     "option":"UNGUESSABLE"
    }
}

Stellen Sie sicher, dass Sie "https: //" von Ihrer dynamicLinkDomain entfernen

Julien

2
JulienCoo

Sie können Ihrem Link zusätzliche Parameter hinzufügen, um eine kurze URL aus Firebase .. zu generieren. Hier habe ich ein Beispiel für die Erzeugung einer kurzen URL mithilfe der Firebase-API angegeben. Hier ist ServiceRequestHelper (this). PostCall ist meine generische Klasse, um eine API-Anfrage zu stellen

String url = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=YOUR_KEY";

    try {
        PackageManager manager = this.getPackageManager();
        PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
        JSONObject jsonObject = new JSONObject();
        JSONObject androidInfoObject = new JSONObject();
        androidInfoObject.put("androidPackageName", getApplicationContext().getPackageName());
        androidInfoObject.put("androidMinPackageVersionCode",String.valueOf(info.versionCode));

        JSONObject iosInfoObject = new JSONObject();
        iosInfoObject.put("iosBundleId", "tettares.Test_ID");
        JSONObject dynamicLinkInfoObj = new JSONObject();
        dynamicLinkInfoObj.put("dynamicLinkDomain", "wgv3v.app.goo.gl");
        dynamicLinkInfoObj.put("link", "https://test.in/?UserId=14&UserName=Naveen");  // Pass your extra paramters to here
        dynamicLinkInfoObj.put("androidInfo", androidInfoObject);
        dynamicLinkInfoObj.put("iosInfo", iosInfoObject);

        JSONObject suffixObject = new JSONObject();
        suffixObject.put("option" , "SHORT");
        jsonObject.put("dynamicLinkInfo", dynamicLinkInfoObj);
        jsonObject.put("suffix", suffixObject);

        Log.d("JSON Object : " , jsonObject.toString());

        new ServiceRequestHelper(this).PostCall(url, jsonObject, false, new CallBackJson() {
            @Override
            public void done(JSONObject result) throws JSONException {

                try {
                    if (result.has("shortLink")) {
                        DEEP_LINK_URL = result.getString("shortLink");                                                   }
                } catch(Exception e)
                {
                    e.printStackTrace();
                }

            }
        });


    } catch (JSONException | PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }

In Ihrer Empfangsaktivität:

boolean autoLaunchDeepLink = false;
    AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
            .setResultCallback(
                    new ResultCallback<AppInviteInvitationResult>() {
                        @Override
                        public void onResult(@NonNull AppInviteInvitationResult result) {
                            if (result.getStatus().isSuccess()) {
                                // Extract deep link from Intent
                                Intent intent = result.getInvitationIntent();
                                String deepLink = AppInviteReferral.getDeepLink(intent);

                                // Handle the deep link. For example, open the linked
                                // content, or apply promotional credit to the user's
                                // account.

                                // [START_EXCLUDE]
                                // Display deep link in the UI
                                Log.d(TAG, "deeplink URL: " + deeplink); // Here you get https://test.in/?UserId=14&UserName=Naveen
                                // [END_EXCLUDE]
                            } else {
                                Log.d(TAG, "getInvitation: no deep link found.");
                            }
                        }
                    });
2
Naveen Kumar M

Keine Notwendigkeit für all die Hektik

  1. Kürzen Sie die URL nicht, wenn Sie Parameter übergeben möchten
  2. Schreiben Sie die Links so.

    String link = " https://APP_CODE.app.goo.gl/?refferer= " + userId;

    //APP_CODE is firebase link
    
     Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title))
                    .setMessage(getString(R.string.invitation_custom_message)))
                    .setDeepLink(Uri.parse(link))
               .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
                    .setCallToActionText(getString(R.string.invitation_cta))
                    .build();
            startActivityForResult(intent, REQUEST_INVITE);
    
0
Job M

1 Ändern Sie zunächst Ihren Dynamic Link in der Firebase-Konsole von http: // exampleandroid/test in http: // exampleandroid/test? Data 2. Sie senden damit die Abfrageparameterdaten

 DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
                   // .setLink(dynamicLinkUri)
                    .setLink(Uri.parse("http://exampleandroid/test?data=dsads"))
                    .setDomainUriPrefix("https://App_Name.page.link")
                    // Open links with this app on Android
                    .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
                    // Open links with com.example.ios on iOS
                    .setIosParameters(new DynamicLink.IosParameters.Builder("com.appinventiv.ios").build())
                    .buildDynamicLink();

            dynamicLinkUri = dynamicLink.getUri();
0
Dishant Kawatra

Ich habe alles oben versucht aber keine Arbeit. Ich denke, Sie sollten den Link http://example.com/?userid=123tohttp://example.com/userid/123 ändern.

0
chii