Как получить ссылку на facebook, если приложение не установлено

Как я могу получить данные ссылки на приложение, если мое приложение не было установлено, когда пользователь нажал глубокую ссылку в приложении 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. Я могу проверить, что в SDK 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.
    }
});

Ответ 1

Похоже, FB исправил эту проблему сейчас.

edit: Следуйте за настройкой отложенной глубокой ссылки: https://developers.facebook.com/docs/app-ads/deep-linking#deferred-deep-linking

Эта ссылка для тестирования: https://developers.facebook.com/tools/app-ads-helper/

Перейдите в App Ads Helper → Выберите свое приложение → Проверить Deep Link → Введите URL глубокой ссылки → Проверить отправку отложенных → Отправить на Android.

Примечание:  1. На вашем устройстве должно быть установлено приложение FB и войти в ту же учетную запись разработчика, чтобы это работало.  2. Необходимо удалить и переустановить приложение после отправки отложенного   глубокая связь. Удаление можно выполнить и до отправки ссылки.

Ответ 2

Я работаю в branch.io, который делает все это для вас бесплатно и работает за пределами Facebook, а мы решили выпустить способ передачи приложений через установку. Я расскажу, как мы его построили.

Во-первых, вам нужно будет собирать идентификатор рекламы Google, поэтому убедитесь, что вы зашли в Google Play Services в свой проект. Для этого просто добавьте это в свой файл gradle:

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

Теперь вам потребуется сделать сетевой запрос каждый раз, когда приложение откроется, чтобы проверить, возник ли пользователь из Facebook, но он не слишком сложный. В приложении open, POST на следующую конечную точку с вашим идентификатором приложения Facebook, токеном доступа к приложениям и идентификатором рекламы Google.

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 с помощью этого метода:

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 (объявления, приглашения и т.д.), просто зайдите в свою глубокую ссылку. В этом примере показана ссылка Branch, вставленная в:

введите описание изображения здесь

Если вы не хотите иметь дело с этим, у нас есть родная библиотека с обратным вызовом, выполняемая при запуске сеанса приложения, которая вернет все ваши глубокие параметры ссылки.

Ответ 3

По состоянию на 2 декабря 2014 года на Android отключены ссылки на отложенные приложения facebook. Я могу заставить свои ссылки на приложения работать, когда приложение уже установлено, но когда приложение НЕ установлено, ссылка приложения никогда не отправляется в приложение после его установки.

Я общаюсь с facebook, я буду размещать любые обновления здесь.

Ответ 4

Как ответы команды FB на https://developers.facebook.com/bugs/393947180805373:

Он работает, когда вы устанавливаете приложение из нового реального объявления (не тестового инструмента) в первый раз.

Пояснение:

Разработчик:

Поток с первой попытки. (Не установлено, используя устройство 1)

  • Нажала на кнопку объявление.
  • Начать перенаправление в Google Play.
  • установил мое приложение на устройстве 1.
  • впервые запустил мое приложение. → результат: я мог видеть applinkdata.

-

  1. удалило мое приложение на устройстве 1 (такое же устройство, которое я использовал в первом тесте.)
  2. Нажав на кнопку снова объявление.
  3. Начать перенаправление в Google Play.
  4. установил мое приложение на устройстве 1.
  5. впервые запустил мое приложение. → результат: я не мог видеть applinkdata, я получил нулевое значение. (интересно, почему?)

Команда FB:

из-за некоторых технических ограничений на нашей стороне отложенная глубокая ссылка сбой при отправке объявления на ваше собственное устройство с использованием объявления инструмент предварительного просмотра

...

Поведение на устройстве 1 - ожидаемое поведение. Приложение извлекает данные приложения с сервера. Когда сервер получает запрос, он помечает данные объявления-объявления как полученные. Последующие запросы не возвращают его. (В противном случае, каждый раз, когда вы после этого приложение открыло приложение, которое загрузило бы приложение, которое было бы Плохой опыт. Ссылка должна выполняться только один раз.). Только если вы создайте новое объявление и щелкните по нему, и данные снова получатся.

Надеюсь, это поможет.

С уважением,

Джек

Ответ 5

Для разработчиков: Следующие шаги работали для меня, 1. Удалите приложение. 2. Отправить глубокую ссылку FB 3. нажмите на deeplink, чтобы вы могли играть в магазин (не устанавливать приложение) 4. Теперь отлаживаем приложение 5. вы найдете значение applinkData в событии onDeferredAppLinkDataFetched.