如果没有安装应用程序,如何获取Facebook应用程序链接

时间:2014-11-02 01:09:28

标签: android facebook deep-linking applinks

如果用户在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.
    }
});

5 个答案:

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

enter image description here

如果你不想处理这个,我们有一个本地库,在app session start上执行回调,它会返回你所有的深层链接参数。

答案 2 :(得分:0)

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

我与Facebook保持联系,我会在此处发布任何更新。

答案 3 :(得分:0)

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

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

说明:

  

开发:

     

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

     
      
  1. 点击广告按钮。
  2.   
  3. 开始重定向到Google Play。
  4.   
  5. 在设备1上安装了我的应用。
  6.   
  7. 第一次推出了我的应用。 &GT;&GT;结果:我可以看到applinkdata。
  8.         

    -

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

      FB团队:

           

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

           

      ...

           

      设备1上的行为是预期的行为。该应用程序   从服务器获取applink数据。当服务器获得   请求,它将ad-applink数据标记为已获取。   后续请求不会返回它。 (否则,每次你   之后打开了应用程序,它会加载applink,这将是一个   坏的经验。该链接只应遵循一次。)。 只有你   创建新广告并点击它就会再次获取数据。

我希望它会有所帮助。

致以最诚挚的问候,

杰克

答案 4 :(得分:0)

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