2016-07-09 15 views
7

Piszę aplikację na konferencję Open Source.Firebase dynamic link obsługuje niestandardowe parametry?

Początkowo każda uczestników otrzyma inny link, e-mailem lub SMS-em jak

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

następnie użyj ten link, aby otworzyć aplikację, możemy wiedzieć użytkownik, który uczestnik przez token.

Firebase wypuszcza nową funkcję Dynamic Links in I/O 2016, zapewnia większą wygodę użytkownikom.

Próbowałem tego, ale nie mogę znaleźć żadnego sposobu przekazania parametrów niestandardowych (tokena) w linkach dynamicznych, jak używać tego samego łącza z różnymi parametrami do moich użytkowników?

Dzięki.

Odpowiedz

12

Nie sądzę, można użyć krótkie URL: https://<my app>.app.goo.gl/Gk3m chyba utworzyć po jednym dla każdego użytkownika, ale można użyć długiego URL: https://<my app>.app.goo.gl/?link=https://example.com/?token=fccfc8bfa07643a1ca8015cbe74f5f17 ...(add other parameters as needed) i ustawić nowy token dla każdego użytkownika.

Zakładam, że generujesz tokeny automatycznie. W takim przypadku możesz użyć skrótu this, aby skrócić linki.

+0

Dzięki! To jest praca! –

+0

proszę pomóc w tym: http://stackoverflow.com/q/42093902/6144372 –

1

Możesz dodać dodatkowy parametr do linku, aby wygenerować krótki URL z Firebase. Tutaj podałem przykład generowania krótkich adresów URL za pomocą interfejsu API Firebase. Tutaj ServiceRequestHelper (this) .PostCall moja klasa rodzajowe, aby żądanie API

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 Your Zgłoszeń działalność:

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."); 
          } 
         } 
        }); 
4

Teraz można tworzyć krótkie linki przy pomocy Firebase SDK przez FirebaseDynamicLinks.getInstance().createDynamicLink() : Kod https://firebase.google.com/docs/dynamic-links/android/create

Próbka:

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 
      } 
     } 
    }); 
Powiązane problemy