我在Android应用中实现了深层链接。 我想通过Facebook Messenger向我的朋友发送链接,当他们点击它时,如果安装了该应用程序将会打开,否则Google Play商店应该会打开以安装该应用程序。
我在清单中有以下意图过滤器:
<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:scheme="christmascards" />
</intent-filter>
这是我在发送到Facebook获取我的规范网址的参数中添加的内容:
Bundle params = new Bundle();
params.putString("access_token", accessToken);
params.putString("name", "Christmas Cards Link");
params.putString("android", "[{\"app_name\": \""+getString(R.string.app_name)+"\" ," +
"\"class\":\"\"," +
"\"package\":\"com.iovchev.christmascards\"," +
"\"url\":\"christmascards://postcard?id="+cardId+"\"}]"
);
这是我在获取规范网址时发送给Messenger的内容:
FacebookDialog.MessageDialogBuilder builder =
new FacebookDialog.MessageDialogBuilder(SendCardActivity.this)
.setLink(url)
.setName("Christmas Card For You")
.setCaption("Share amazing christmas cards with your friends.")
.setPicture("http://i.imgur.com/L2KlJWQ.png")
.setDescription("To view my amazing post card just click on the link here. You must have Christmas Cards app for Android.");
FacebookDialog dialog = builder.build();
dialog.present();
每当我点击信使中的信息时,我总会被重定向到Google Play商店。以前一切都没有任何问题,当我尝试打开我的应用程序打开的旧消息时。之前和之后的唯一区别是我有应用程序的ios params。
我想收到我发送的自定义架构及其中的数据(我的意思是明信片ID)并在我的HomeActivity中使用它,这就是为什么我删除了类字段的内容(当它设置为没有我提供的网址发送空意图。
访问令牌字段是“app_id | app_secret”
的组合我尝试过:
有什么想法吗?
更新1:
对于旧链接,当您单击链接时,信使会抛出以下意图:
act=android.intent.action.VIEW dat=christmascards://postcard?id=Vi9XTnj85R&target_url=https://fb.me/1509516792632317
这就是我的应用程序启动的原因。
对于新链接,它会引发以下意图:
act=android.intent.action.VIEW dat=https://fb.me/624376077674657 cmp=com.android.chrome/com.google.android.apps.chrome.Main}.
这就是为什么我的应用程序没有启动。
更新2:
使用
分享链接时FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(MainActivity.this)
.setLink(url)
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
一切都好。这是一个信使问题?
答案 0 :(得分:0)
https://developers.facebook.com/bugs/831404546921822/这是已记录的错误。这实际上是Facebook Messenger for Android中的一个错误。