【发布时间】:2014-12-09 12:31:12
【问题描述】:
我已经在我的 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+"\"}]"
);
这是我在获得规范 URL 时发送给 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();
每当我点击 Messenger 中的消息时,我总是会被重定向到 Google Play 商店。以前一切正常,但当我尝试打开旧消息时,我的应用程序仍然会打开。之前唯一的区别是我有应用程序的 ios 参数。
我想接收我发送的带有数据的自定义模式(我的意思是明信片 id)并在我的 HomeActivity 中使用它,这就是为什么我删除了类字段的内容(当它被设置时它是发送一个没有我提供的网址的空意图)。
访问令牌字段是“app_id|app_secret”的组合
我尝试过的:
- 添加 ios 参数只是为了检查是否一切正常 - 不工作
- 强制停止并清除 facebook 和 messenger 应用 - 不工作
- 将类字段作为 com.iovchev.christmascards.HomeActivity 添加到 android pasams - 不工作
- 重新检查哈希键 - 不起作用
- 更改意图过滤器中类别的位置 - 不起作用
有什么想法吗?
更新 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());
一切正常。所以是信使的问题?
【问题讨论】:
标签: android facebook deep-linking