How to get facebook app link if app wasn't installed

d2vid picture d2vid · Nov 2, 2014 · Viewed 13.3k times · Source

How can I get the app link data if my app wasn't installed when the user tapped a deep link in the facebook app? There is surprisingly little documentation from facebook on this issue.

I have a deep link https://fb.me/635533123230265

Which returns the 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>

If the app is already installed, AppLinkData appLinkData = AppLinkData.createFromActivity(activity); works perfectly.

But if the app was not installed, I believe I'm supposed to use AppLinkData.fetchDeferredAppLinkData. I can verify that within the facebook SDK it makes an HTTP request and receives JSON, but it never contains the deep link, just {"success":true}. Any ideas?

Here is my code:

// 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.
    }
});

Answer

Vijay Raghavan picture Vijay Raghavan · May 21, 2015

Looks like FB has fixed this issue now.

edit: Follow this for setting up deferred deep-linking: https://developers.facebook.com/docs/app-ads/deep-linking#deferred-deep-linking

This link for testing: https://developers.facebook.com/tools/app-ads-helper/

Go to App Ads Helper -> Select your App -> Test Deep Link -> Enter deep-link URL -> Check Send Deferred -> Send to Android.

Note: 1. You need to have FB app installed on your device and logged in to the same developer account for this to work. 2. Need to uninstall and reinstall the app after sending a deferred deep-link. Uninstall can be done before sending the link as well.