14

如果用户在 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&amp;utm_medium=cpi&amp;utm_term=sf&amp;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.
    }
});
4

5 回答 5

6

看起来FB现在已经解决了这个问题。

编辑:按照此设置延迟深度链接:https ://developers.facebook.com/docs/app-ads/deep-linking#deferred-deep-linking

此测试链接:https ://developers.facebook.com/tools/app-ads-helper/

转到应用广告助手 -> 选择您的应用 -> 测试深层链接 -> 输入深层链接 URL -> 选中发送延迟 -> 发送到 Android。

注意: 1. 您需要在您的设备上安装 FB 应用程序并登录到相同的开发者帐户才能使用此功能。2. 发送延迟深层链接后需要卸载重装应用。也可以在发送链接之前完成卸载。

于 2015-05-20T22:05:03.130 回答
4

我在branch.io工作,它免费为您完成所有这些工作,并且也在 Facebook 之外工作,我们找到了一种通过安装传递 App Links 的方法。我将分享我们是如何构建它的。

首先,您需要收集 Google 广告 ID,因此请确保将 Google Play 服务放入您的项目。为此,只需将其添加到您的 gradle 文件中:

compile 'com.google.android.gms:play-services:7.5.0'

现在,它会要求您在每次应用打开时发出网络请求,以检查用户是否来自 Facebook,但这并不太复杂。在应用打开时,使用您的 Facebook 应用 ID、应用访问令牌和 Google 广告 ID POST 到以下端点。

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 内容(广告、邀请等)时,只需放入您的深层链接即可。此示例显示粘贴在以下位置的分支链接:

在此处输入图像描述

如果您不想处理这个问题,我们有一个本机库,其中包含在应用会话启动时执行的回调,它将返回您的所有深层链接参数。

于 2015-09-06T02:28:22.450 回答
0

截至 2014 年 12 月 2 日,Facebook 延迟应用链接在 Android 上已损坏。当应用程序已经安装时,我可以让我的应用程序链接正常工作,但是当应用程序尚未安装时,应用程序链接在安装后永远不会发送到应用程序。

我与 facebook 保持联系,我会在这里发布任何更新。

于 2014-12-02T19:11:02.880 回答
0

作为 FB 团队在https://developers.facebook.com/bugs/393947180805373上的回复:

当您第一次从新的真实广告(不是测试工具)安装应用程序时,它可以工作。

解释:

开发商:

流在第一次尝试。(未安装,使用设备 1)

  1. 点击广告按钮。
  2. 开始重定向到 Google Play。
  3. 在设备 1 上安装了我的应用程序。
  4. 第一次启动我的应用程序。>> 结果:我可以看到 applinkdata。

-

  1. 在设备 1 上删除了我的应用程序(与我在第一次测试中使用的设备相同。)
  2. 再次点击广告按钮。
  3. 开始重定向到 Google Play。
  4. 在设备 1 上安装了我的应用程序。
  5. 第一次启动我的应用程序。>> 结果:我看不到 applinkdata,我得到了空值。( 想知道为什么 ? )

FB团队:

由于我们这边的一些技术限制,当您使用广告预览工具将广告发送到您自己的设备时,延迟的深层链接将失败

...

设备 1 上的行为是预期行为。该应用程序从服务器获取 applink 数据。当服务器收到请求时,它会将 ad-applink 数据标记为已获取。后续请求不会返回它。(否则以后每次打开app都会加载applink,体验不好,链接只能被点一次)。只有当您创建一个新广告并点击它时,才会再次获取数据。

我希望它会有所帮助。

此致,

杰克

于 2016-01-07T11:38:16.003 回答
0

对于开发者:以下步骤对我有用, 1. 卸载应用 2. 发送深层链接表单 FB 3. 点击深层链接,带你去玩商店(不要安装应用) 4. 现在调试应用 5.您会在 onDeferredAppLinkDataFetched 事件中找到 applinkData 值。

于 2017-01-04T20:39:29.357 回答