2017-12-17 4 views
0

Nehmen wir an, der erste Benutzer sendet eine Einladung an den zweiten Benutzer. Benutzer senden einen globalen Link und der zweite Benutzer erhält diesen Link. In meinem Fall erhielt Benutzer dynamic link anstelle von global link in Android-Gerät.So erhalten Sie den globalen Link mit Firebase Dynamic Links für Android

Ich möchte https://aewp.com/share

private void shareVocabulary() { 
    Intent intent = new AppInviteInvitation.IntentBuilder("Text") 
      .setMessage("Message") 
      .setDeepLink(createDynamicLink().getUri()) 
      .setCustomImage(Uri.parse("https://lh3.googleusercontent.com/info.jpg")) 
      .setCallToActionText(getString(R.string.install)) 
      .build(); 
    startActivityForResult(intent, SHARE_RESULT_CODE); 
} 

public DynamicLink createDynamicLink(){ 

     String domain = getString(R.string.domain) + ".app.goo.gl"; 

     return FirebaseDynamicLinks.getInstance().createDynamicLink(). 
       setLink(Uri.parse("https://aewp.com/share")). 
       setDynamicLinkDomain(domain). 
       setAndroidParameters(new DynamicLink.AndroidParameters.Builder(getPackageName()). 
         setFallbackUrl(Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName())). 
         build() 
       ). 
       buildDynamicLink(); 
    } 

DeepLinkActivity.class aktuellen uri

In folgenden Code jedes Mal Dynamic Link zurückgegeben, statt global Link

FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent()) 
       .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { 
        @Override 
        public void onSuccess(PendingDynamicLinkData data) { 
         if (data == null) { 
          Logger.logInfo(getClass(), "getInvitation: no data"); 
          return; 
         } 

         // Get the deep link 
         Uri link = data.getLink(); 
        } 
       }) 
       .addOnFailureListener(this, new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception e) { 
         Logger.logError(getClass(), "getDynamicLink:onFailure", e); 
        } 
       }); 

Was teilen wie ich unterzeichne und ich sollte diesen Link erhalten "https://aewp.com/share " anstelle von kurzer oder großer dynamischer Verbindung

Wie kann ich das beheben?

Antwort

0

Es gibt einen kleinen Unterschied zwischen Intent-Typen Um Firebase AppInviteInvitation verwenden wir keine Deep-Link, anstelle davon sollten wir dynamische Link übergeben.

Intent intent = new AppInviteInvitation.IntentBuilder("Send") 
      .setMessage("Message") 
      .setDeepLink(R.string.global_link).build()) 
      .setCustomImage(Uri.parse("https://lh3.googleusercontent.com/9.jpg")) 
      .setCallToActionText("Install)) 
      .build(); 
    startActivityForResult(intent, SHARE_RESULT_CODE); 

Während Senden von Daten über Intent.ACTION_SEND, müssen wir für verschiedene Plattformen eine dynamische Verknüpfung verwenden

Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.putExtra(Intent.EXTRA_TEXT,"Text here " + createDynamicLink().getUri().toString()); 
    intent.setType("text/plain"); 
    startActivity(Intent.createChooser(intent, "choose one")); 
Verwandte Themen