如果用户在Facebook应用中点按深层链接时未安装我的应用,如何获取应用链接数据?在这个问题上,Facebook的文档很少令人惊讶。
我有一个深层链接https://fb.me/635533123230265
返回HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>App Link</title>
<meta property="fb:app_id" content="619350481515196">
<meta property="al:android:url" content="instapanel://panel?utm_source=fb&utm_medium=cpi&utm_term=sf&utm_campaign=PROPE">
<meta property="al:android:package" content="com.instapanel.android">
<meta property="al:android:app_name" content="Instapanel">
<meta property="al:web:should_fallback" content="false">
<meta http-equiv="refresh" content="0;url=http://play.google.com/store/apps/details?id=com.instapanel.android">
</head>
<body>Redirecting...</body>
</html>
如果已安装该应用,则AppLinkData appLinkData = AppLinkData.createFromActivity(activity);
可以正常运行。
但如果未安装该应用,我相信我应该使用AppLinkData.fetchDeferredAppLinkData
。我可以验证在facebook SDK中它发出HTTP请求并接收JSON,但它从不包含深层链接,只是{"success":true}
。有什么想法吗?
这是我的代码:
// Fetch data immediately.
AppLinkData appLinkData = AppLinkData.createFromActivity(activity);
App.setAppLinkData(appLinkData); // Handles appLinkData
// In case data is deferred because app wasn't installed yet.
AppLinkData.fetchDeferredAppLinkData(activity, new AppLinkData.CompletionHandler() {
@Override
public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {
App.setAppLinkData(appLinkData); // Handles appLinkData. appLinkData is always null here.
}
});
答案 0 :(得分:6)
看起来FB现在已经解决了这个问题。
编辑:按照此操作设置延迟深层链接:https://developers.facebook.com/docs/app-ads/deep-linking#deferred-deep-linking
此测试链接:https://developers.facebook.com/tools/app-ads-helper/
转到App Ads Helper - &gt;选择你的应用程序 - &gt;测试深层链接 - &gt;输入深层链接网址 - &gt;选中发送延期 - &gt;发送到Android。
注意: 1.您需要在您的设备上安装FB应用程序并登录到同一个开发人员帐户才能使用此工具。 2.发送延期后需要卸载并重新安装应用程序 深层链接。也可以在发送链接之前完成卸载。
答案 1 :(得分:3)
我在branch.io工作,它为你免费提供所有这些东西,并在Facebook之外工作,我们找到了通过安装传递App Links的方法。我将分享我们如何构建它。
首先,您需要收集Google广告ID,因此请确保将Google Play服务放入您的项目中。为此,只需将其添加到您的gradle文件中:
compile 'com.google.android.gms:play-services:7.5.0'
现在,每次应用程序打开时都会要求您发出网络请求,以检查用户是否来自Facebook,但这并不是太复杂。在应用程序打开时,使用您的Facebook App ID,App Access Token和Google Advertising ID发送到以下端点。
https://graph.facebook.com/<APP ID>/activities?access_token=<APPACCESSTOKEN>&event=DEFERRED_APP_LINK&advertiser_id=<GAID>&advertiser_tracking_enabled=1&application_tracking_enabled=1
GAID:您可以使用以下方法检索Google广告ID:
String gaid = AdvertisingIdClient.getAdvertisingIdInfo(this).getId();
应用访问令牌:要获取访问令牌,只需对以下端点进行GET调用:
https://graph.facebook.com/oauth/access_token?client_id=<APPID>&client_secret=<APPSECRET>&grant_type=client_credentials
然后,当您创建Facebook内容(广告,邀请等)时,只需放入您的深层链接即可。此示例显示粘贴在以下位置的分支链接:
如果你不想处理这个,我们有一个本地库,在app session start上执行回调,它会返回你所有的深层链接参数。
答案 2 :(得分:0)
截至2014年12月2日,Facebook延期应用链接在Android上被破坏。我已经安装了应用程序后可以让我的应用程序链接正常工作,但是当应用程序尚未安装时,应用程序链接在安装后永远不会发送到应用程序。
我与Facebook保持联系,我会在此处发布任何更新。
答案 3 :(得分:0)
作为FB团队在https://developers.facebook.com/bugs/393947180805373上的回复:
说明:
开发:
流程第一次尝试。 (未安装,使用设备1)
- 点击广告按钮。
- 开始重定向到Google Play。
- 在设备1上安装了我的应用。
- 第一次推出了我的应用。 &GT;&GT;结果:我可以看到applinkdata。
醇>-
- 在设备1上删除了我的应用程序(我在第一次测试中使用的设备相同。)
- 再次点击广告按钮。
- 开始重定向到Google Play。
- 在设备1上安装了我的应用。
- 第一次推出了我的应用。 &GT;&GT;结果:我看不到applinkdata,我得到了null值。 (想知道为什么?)
醇>FB团队:
由于我们方面的一些技术限制,延迟深层链接 您使用广告将广告发送到自己的设备时会失败 预览工具
...
设备1上的行为是预期的行为。该应用程序 从服务器获取applink数据。当服务器获得 请求,它将ad-applink数据标记为已获取。 后续请求不会返回它。 (否则,每次你 之后打开了应用程序,它会加载applink,这将是一个 坏的经验。该链接只应遵循一次。)。 只有你 创建新广告并点击它就会再次获取数据。
我希望它会有所帮助。
致以最诚挚的问候,
杰克
答案 4 :(得分:0)
对于开发者: 以下步骤对我有用, 1.卸载应用程序 2.发送深层链接表格FB 3.点击深层链接,带你去玩商店(不要安装应用) 4.现在调试应用程序 5.您将在onDeferredAppLinkDataFetched事件中找到applinkData值。