mag*_*man 0 android firebase firebase-dynamic-links
问题: 为什么以编程方式创建的“短动态链接”不会直接打开/启动应用程序?
但是在控制台创建的链接只显示一个选择浏览器的提示,然后应用程序直接启动。
我想在用户单击由 android 应用程序动态创建的动态 url 时直接启动应用程序。
单击由 android 应用程序动态创建的动态短链接时,会发生以下情况,
1.在浏览器中打开的选项显示
2.浏览器打开,显示加载对话框
3.再次显示在浏览器中打开的选项(这次应用程序显示在更多选项区域)
4.点击浏览器打开网站,点击应用启动应用但深层链接丢失。
任何帮助都会很棒。
清单文件
...
<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="notifika.tupio.me"
android:scheme="https" />
</intent-filter>
...
Run Code Online (Sandbox Code Playgroud)
链接生成
public void createDynamicLink(final Context context, final SingleNotification notification){
final Uri[] mInvitationUrl = {null};
String link = "https://notifika.tupio.me/?public=" + notification.getTag();
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))
.setDynamicLinkDomain("notifika.page.link")
.setAndroidParameters(
new DynamicLink.AndroidParameters.Builder("me.tupio.notifika")
.build())
.setGoogleAnalyticsParameters(
new DynamicLink.GoogleAnalyticsParameters.Builder()
.setSource("In-App")
.setMedium("social")
.setCampaign("Word-Word")
.build())
.setSocialMetaTagParameters(
new DynamicLink.SocialMetaTagParameters.Builder()
.setTitle("Notifika")
.setDescription("Sent and Receive Notification like this.Download the app now")
.build())
.buildShortDynamicLink()
.addOnSuccessListener(new OnSuccessListener<ShortDynamicLink>() {
@Override
public void onSuccess(ShortDynamicLink shortDynamicLink) {
mInvitationUrl[0] = shortDynamicLink.getShortLink();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, notification.getTitle()+"\n"+notification.getMessage().substring(0, Math.min(notification.getMessage().length(), 100)) + "..." +context.getResources().getString(R.string.share_link_desc)+"\n"+mInvitationUrl[0]);
context.startActivity(Intent.createChooser(intent, "Share"));
}
});
}
Run Code Online (Sandbox Code Playgroud)
主Activity.class
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.v("Deeplink",deepLink.toString());
}
//
// If the user isn't signed in and the pending Dynamic Link is
// an invitation, sign in the user anonymously, and record the
// referrer's UID.
//
if (deepLink != null
&& deepLink.getBooleanQueryParameter("public",false)) {
String referrerUid = deepLink.getQueryParameter("public");
Log.v("Deeplink", referrerUid);
Toast.makeText(getApplicationContext(),referrerUid,Toast.LENGTH_LONG).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
遵循了本指南。
您还需要为 page.link/app.goo.gl 域添加一个 Intent 过滤器,以便深层链接直接指向您的应用。请参阅:https : //firebase.google.com/docs/dynamic-links/android/receive#app_links
| 归档时间: |
|
| 查看次数: |
2703 次 |
| 最近记录: |