向 Firebase 动态链接添加参数
Add parameter to Firebase Dynamic Links
我想让用户通过单击按钮并向其他潜在用户 link 发送赞
来分享我的应用程序中的产品
www.myapp.com/offer/123
在那里,“123”必须在用户单击按钮的那一刻生成,以便稍后用
处理它
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
但不幸的是我无法传递参数。
String link = "http://www.myapp.com/offer/123";
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))
.setDynamicLinkDomain("fgd3e.app.goo.gl")
.buildShortDynamicLink()
.addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if (task.isSuccessful()) {
// Short link created
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink = task.getResult().getPreviewLink();
有人可以教我如何在运行时使用自定义参数创建动态 link 以便将目标用户重定向到特定产品详细信息吗?
简短答案: 使用查询参数而不是路径变量,您可以使用 pendingDynamicLinkData.getLink()
返回的 Uri
对象中的 getQueryParameter
方法
我一直在做的是使用查询参数而不是路径变量。
而不是发送 http://www.myapp.com/offer/123, i'm sending something like http://www.myapp.com/?offer=123
要动态添加参数,我只是连接字符串:"http://www.myapp.com/?offer=" + myValue
这个 URL 又是在 firebase 中创建的动态 link 的查询参数:
String url = "https://YourDynamicLinkIdentifier.app.goo.gl/?link=https://myapp.com?offer="
+ myOfferVar
+ "&apn=com.your.apn"; // << Dont forget to change this too
结果 URL 是我发送给 url 缩短器的结果。
然后在回调 onSuccess(PendingDynamicLinkData pendingDynamicLinkData)
中调用 pendingDynamicLinkData
的 getLink()
,正如您已经在做的那样。
既然你有了一个Uri对象,那么调用方法就可以轻松获取参数了getQueryParameter("offer")
。
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
String offerKey = deepLink.getQueryParameter("offer");
注意:如果您仍然喜欢使用路径变量,您可以获取 Uri 路径的最后一段。参见 How to obtain the last path segment of an uri
你需要使用long deep link来发送参数。
示例:
1) link 用于通过 google 播放测试打开应用程序 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) 接收参数:
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);
}
});
我想让用户通过单击按钮并向其他潜在用户 link 发送赞
来分享我的应用程序中的产品www.myapp.com/offer/123
在那里,“123”必须在用户单击按钮的那一刻生成,以便稍后用
处理它FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
Uri deepLink;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
但不幸的是我无法传递参数。
String link = "http://www.myapp.com/offer/123";
Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))
.setDynamicLinkDomain("fgd3e.app.goo.gl")
.buildShortDynamicLink()
.addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
@Override
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
if (task.isSuccessful()) {
// Short link created
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink = task.getResult().getPreviewLink();
有人可以教我如何在运行时使用自定义参数创建动态 link 以便将目标用户重定向到特定产品详细信息吗?
简短答案: 使用查询参数而不是路径变量,您可以使用 pendingDynamicLinkData.getLink()
返回的 Uri
对象中的 getQueryParameter
方法
我一直在做的是使用查询参数而不是路径变量。
而不是发送 http://www.myapp.com/offer/123, i'm sending something like http://www.myapp.com/?offer=123
要动态添加参数,我只是连接字符串:"http://www.myapp.com/?offer=" + myValue
这个 URL 又是在 firebase 中创建的动态 link 的查询参数:
String url = "https://YourDynamicLinkIdentifier.app.goo.gl/?link=https://myapp.com?offer="
+ myOfferVar
+ "&apn=com.your.apn"; // << Dont forget to change this too
结果 URL 是我发送给 url 缩短器的结果。
然后在回调 onSuccess(PendingDynamicLinkData pendingDynamicLinkData)
中调用 pendingDynamicLinkData
的 getLink()
,正如您已经在做的那样。
既然你有了一个Uri对象,那么调用方法就可以轻松获取参数了getQueryParameter("offer")
。
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
String offerKey = deepLink.getQueryParameter("offer");
注意:如果您仍然喜欢使用路径变量,您可以获取 Uri 路径的最后一段。参见 How to obtain the last path segment of an uri
你需要使用long deep link来发送参数。
示例:
1) link 用于通过 google 播放测试打开应用程序 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) 接收参数:
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);
}
});