当用户在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中,它发出一个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.
}
});
发布于 2015-05-20 22:05:03
看来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-09-06 02:28:22
我在branch.io工作,它免费为你做所有这些事情,并且在Facebook之外工作,我们想出了一种通过安装来传递应用程序链接的方法。我会分享我们是如何建造它的。
首先,您需要收集Google广告ID,所以请确保将Google服务放到您的项目中。为此,只需将以下内容添加到您的gradle文件中:
compile 'com.google.android.gms:play-services:7.5.0'
现在,它将要求您在每次打开应用程序时发出网络请求,以检查用户是否来自Facebook,但这并不太复杂。在应用程序打开时,使用您的Facebook应用程序ID、Access令牌和Google广告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();
App访问令牌:要获得访问令牌,只需调用以下端点:
https://graph.facebook.com/oauth/access_token?client_id=<APPID>&client_secret=<APPSECRET>&grant_type=client_credentials
然后,当你创建你的Facebook内容(广告,邀请等),只需插入你的深层链接。此示例显示粘贴在其中的分支链接:
如果您不想处理这个问题,我们有一个本机库,它在app会话开始时执行回调,它将返回所有的深层链接参数。
发布于 2014-12-02 19:11:02
截至2014年12月2日,facebook被推迟的应用程序链接在Android上被打破。我可以让我的应用程序链接工作时,应用程序已经安装,但当应用程序尚未安装,应用程序链接从来没有发送到应用程序后,它已安装。
我和facebook有联系,我会在这里发布任何更新。
https://stackoverflow.com/questions/26695003
复制相似问题