[英]Firebase Dynamic Link with parameters
我是社區的新手,我加入是因為需要強調一個我無法解決的問題。 預先感謝您的任何答案,您可以給我幫助我。
我目前正在 android studio 中開發一個項目,我將其用作 firebase 數據庫,我開始需要共享我的應用程序中的產品、帖子或列表。 因此,我決定使用 Firebase 動態鏈接來共享某些特定對象。
我當前的代碼嘗試創建一個鏈接並共享它,我想知道我做錯了什么,因為它創建了鏈接並讓我共享它,但它沒有得到我傳遞的參數。 在我的例子中,“Lid”是我想通過鏈接傳遞的參數,當點擊鏈接時,只需選擇存儲“Lid”的部分。
holder.BtnShare.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
generateDeepLinkUrl(postCurrent.getLid());
String url="https://palsuper.page.link/lista_compartida";
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink( Uri.parse(url))
.setDomainUriPrefix("https://palsuper.page.link")
.setAndroidParameters(
new DynamicLink.AndroidParameters.Builder("com.ibrahim.palsuper")
.setMinimumVersion(1)
.build())
.buildShortDynamicLink( ShortDynamicLink.Suffix.SHORT).addOnCompleteListener( new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if (task.isSuccessful()) {
Uri shortURL = task.getResult().getShortLink();
shareDeepLink(shortURL.toString());
} else {
Toast.makeText(mContext, "error", Toast.LENGTH_SHORT).show();
}
}
});
shareDeepLink( url );
}
} );
}
private String generateDeepLinkUrl(String Lid) {
return "https://palsuper.com/lista_compartida=" + Lid ;
}
private void shareDeepLink(String url) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Hey! check this content out " + url);
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Check this out !");
mContext.startActivity(Intent.createChooser(shareIntent, "Share this cool content"));
}
獲取鏈接。
private void getDynamicLink() {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
// Get deep link from result (may be null if no link is found)
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
Toast.makeText(HomeActivity.this, "Link obtenido del intent " + deepLink, Toast.LENGTH_SHORT).show();
// Log.d(TAG, "Link obtenido del intent " + deepLink.getPath());
getAndParseSharedData(deepLink.getPath());
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Log.w(TAG, "getDynamicLink:onFailure", e);
}
});
}
private void getAndParseSharedData(String url) {
String pushKey = "";
if (url.contains("_")) {
String[] parts = url.split("=");
pushKey = parts[1];
// Log.d(TAG, "getAndParseSharedData: " + pushKey);
Toast.makeText(HomeActivity.this, pushKey, Toast.LENGTH_SHORT).show();
}
}
}
Joe 您需要將要獲取的參數作為查詢參數傳遞。
Like this:
"https://palsuper.com?lista_compartida=" + Lid;
or
"https://palsuper.com/lista_compartida?lista_compartida=" + Lid;
And then you can fetch it simply using this firebase provided method:
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
String lista_compartida = deepLink.getQueryParameter("lista_compartida");
}
希望這個答案有幫助。
轉到 firbase 控制台動態鏈接部分,然后創建一個動態鏈接,例如https://xyz.page.link ,然后使用以下代碼生成和共享動態鏈接
fun generateContentLink(): Uri? {
val baseUrl = Uri.parse(BASE_URL)
val domain = "https://xyz.page.link"
val link = FirebaseDynamicLinks.getInstance()
.createDynamicLink()
.setLink(baseUrl)
.setDomainUriPrefix(domain)
.setAndroidParameters(AndroidParameters.Builder("com.xyz").build())
.buildDynamicLink()
return link.uri
}
private fun onShareClicked() {
try {
val link = generateContentLink()
Log.e("DynamicLnk", "onShareClicked: " + link.toString())
val subject = " Welcome to QuickPe"
val msg =
"Hi,\nInviting you to join xyz\n an interesting app which provides you\n" +
"incredible offers on Recharge, Shopping & many more.\n\n" +
"Use my referrer code :\n\n " + session()?.getInviteCode().toString() +
"\n\nDownload app from link : \n"
val intent = Intent(Intent.ACTION_SEND)
intent.type = "text/plain"
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT,
msg + "\n" + link + "/" + session()?.getInviteCode().toString())
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
現在在 AndroidManifest.xml 中接收如下代碼
<activity android:name=".xyzActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="https://xyz.page.link"
android:scheme="https"/>
</intent-filter>
</activity>
並在您想要接收代碼的活動中
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener(this
) { pendingDynamicLinkData ->
// Get deep link from result (may be null if no link is found)
var deepLink: Uri? = null
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.link
}
if (deepLink != null) { //Intent.ACTION_VIEW.equals(appLinkAction) &&
val code = deepLink.lastPathSegment
edtReferralCode.setText(code)
}
// Handle the deep link. For example, open the linked
// content, or apply promotional credit to the user's
// account.
// ...
// ...
}
.addOnFailureListener(this
) { e -> Log.w("=================>", "getDynamicLink:onFailure", e) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.