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


похоже, что 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 - > выберите приложение - > Test Deep Link - > введите URL deep-link - > проверить отправить отложено - > отправить на Android.

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


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

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

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

теперь вам потребуется создать сеть запрос каждый раз, когда приложение открывается, чтобы проверить, если пользователь произошел от Facebook, но это не слишком сложно. На приложение открыть, пост к следующей конечной точке с приложением 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: вы можете получить пожалуйста этот метод:

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

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


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

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


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

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

объяснение:

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

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

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

-

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

команда FB:

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

...

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

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

с уважением,

Джек


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