pendingDynamicLinkData 显示为空
pendingDynamicLinkData shows null
我正在开发一个可以分享和获得奖励的应用程序,所以我使用动态 link 的概念来存储邀请者的信息 link 并在以后获得奖励。但是 PendingDynamicLinkData return 在重新安装应用程序时为 null。
主要活动
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();
Log.d("successpra", "onSuccess: ");
String referrerUid = deepLink.getQueryParameter("invitedby");
Toast.makeText(SplashActivity.this,referrerUid,Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(SplashActivity.this,"referrerUid",Toast.LENGTH_SHORT).show();
}
});
分享和赚取点击按钮
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String uid = user.getUid();
Log.d("prashu",uid);
String link = "https://drive.google.com/open?id=1XUPfiBGCSydmgwEE7E-IRatAeGVuMbOr&?invitedby="+uid;
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))
.setDynamicLinkDomain("nw8y9.app.goo.gl")
.setAndroidParameters(
new DynamicLink.AndroidParameters.Builder("com.example.android")
.setMinimumVersion(125)
.build())
.setIosParameters(
new DynamicLink.IosParameters.Builder("com.example.ios")
.setAppStoreId("123456789")
.setMinimumVersion("1.0.1")
.build())
.buildShortDynamicLink()
.addOnSuccessListener(new OnSuccessListener<ShortDynamicLink>() {
@Override
public void onSuccess(ShortDynamicLink shortDynamicLink) {
Uri mInvitationUrl = shortDynamicLink.getShortLink();
Log.d("prashu",mInvitationUrl.toString());
String referrerName =FirebaseAuth.getInstance().getCurrentUser().getDisplayName();
String subject = String.format("%s wants you to play MyExampleGame!", referrerName);
String invitationLink = mInvitationUrl.toString();
String msg = "Let's play MyExampleGame together! Use my referrer link: "
+ invitationLink;
String msgHtml = String.format("<p>Let's play MyExampleGame together! Use my "
+ "<a href=\"%s\">referrer link</a>!</p>", invitationLink);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, msg);
intent.putExtra(Intent.EXTRA_HTML_TEXT, msgHtml);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
});
清单
<activity android:name=".MainActivity">
<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="drive.google.com/open?id=1xupfibgcsydmgwee7e-irataegvumbor" android:scheme="http"/>
<data android:host="drive.google.com/open?id=1xupfibgcsydmgwee7e-irataegvumbor" android:scheme="https"/>
</intent-filter>
</activity>
在此先感谢您,您的帮助非常宝贵
可能原因:
1.包名称不正确
您确定您的应用程序包名称是 com.example.android
作为
提到
在new DynamicLink.AndroidParameters.Builder("com.example.android")
此处所需的包名称是您在应用级别 build.gradle
文件中的 applicationId
。
2。由于 DynamicLinkDomain
,URL 编队不正确
我的 URL 不正确,结果是 https://app_code.app.goo.gl?.....
我不得不将 domain
更改为 app_code.app.goo.gl/
(现在在末尾附加正斜杠),然后它才变成有效的 URL.
3。由于 URL
编码,URL 格式不正确
执行 String invitationLink = mInvitationUrl.toString();
会将您的深度 link 转换为 "https%3A%2F%2Fdrive.goo...."
,即 "https://drive.google.com/open?....."
。为此,您需要使用 URLDecoder.decode(mInvitationUrl.toString(), "UTF-8");
方法。这将 return 与所需的有效 URL 相同的 String
。
提示:
您无需在 AndroidManifest.xml
中的 android:host=""
下提供完整的 url。只需 android:host="drive.google.com"
就可以让您的应用程序打开所有 drive.google.com
URL。
我正在开发一个可以分享和获得奖励的应用程序,所以我使用动态 link 的概念来存储邀请者的信息 link 并在以后获得奖励。但是 PendingDynamicLinkData return 在重新安装应用程序时为 null。
主要活动
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();
Log.d("successpra", "onSuccess: ");
String referrerUid = deepLink.getQueryParameter("invitedby");
Toast.makeText(SplashActivity.this,referrerUid,Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(SplashActivity.this,"referrerUid",Toast.LENGTH_SHORT).show();
}
});
分享和赚取点击按钮
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String uid = user.getUid();
Log.d("prashu",uid);
String link = "https://drive.google.com/open?id=1XUPfiBGCSydmgwEE7E-IRatAeGVuMbOr&?invitedby="+uid;
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))
.setDynamicLinkDomain("nw8y9.app.goo.gl")
.setAndroidParameters(
new DynamicLink.AndroidParameters.Builder("com.example.android")
.setMinimumVersion(125)
.build())
.setIosParameters(
new DynamicLink.IosParameters.Builder("com.example.ios")
.setAppStoreId("123456789")
.setMinimumVersion("1.0.1")
.build())
.buildShortDynamicLink()
.addOnSuccessListener(new OnSuccessListener<ShortDynamicLink>() {
@Override
public void onSuccess(ShortDynamicLink shortDynamicLink) {
Uri mInvitationUrl = shortDynamicLink.getShortLink();
Log.d("prashu",mInvitationUrl.toString());
String referrerName =FirebaseAuth.getInstance().getCurrentUser().getDisplayName();
String subject = String.format("%s wants you to play MyExampleGame!", referrerName);
String invitationLink = mInvitationUrl.toString();
String msg = "Let's play MyExampleGame together! Use my referrer link: "
+ invitationLink;
String msgHtml = String.format("<p>Let's play MyExampleGame together! Use my "
+ "<a href=\"%s\">referrer link</a>!</p>", invitationLink);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, msg);
intent.putExtra(Intent.EXTRA_HTML_TEXT, msgHtml);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
});
清单
<activity android:name=".MainActivity">
<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="drive.google.com/open?id=1xupfibgcsydmgwee7e-irataegvumbor" android:scheme="http"/>
<data android:host="drive.google.com/open?id=1xupfibgcsydmgwee7e-irataegvumbor" android:scheme="https"/>
</intent-filter>
</activity>
在此先感谢您,您的帮助非常宝贵
可能原因:
1.包名称不正确
您确定您的应用程序包名称是 com.example.android
作为
提到
在new DynamicLink.AndroidParameters.Builder("com.example.android")
此处所需的包名称是您在应用级别 build.gradle
文件中的 applicationId
。
2。由于 DynamicLinkDomain
我的 URL 不正确,结果是 https://app_code.app.goo.gl?.....
我不得不将 domain
更改为 app_code.app.goo.gl/
(现在在末尾附加正斜杠),然后它才变成有效的 URL.
3。由于 URL
编码,URL 格式不正确执行 String invitationLink = mInvitationUrl.toString();
会将您的深度 link 转换为 "https%3A%2F%2Fdrive.goo...."
,即 "https://drive.google.com/open?....."
。为此,您需要使用 URLDecoder.decode(mInvitationUrl.toString(), "UTF-8");
方法。这将 return 与所需的有效 URL 相同的 String
。
提示:
您无需在 AndroidManifest.xml
中的 android:host=""
下提供完整的 url。只需 android:host="drive.google.com"
就可以让您的应用程序打开所有 drive.google.com
URL。