Как получить ссылку на приложение 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.
    }
});

person d2vid    schedule 02.11.2014    source источник
comment
В настоящее время нет поддержки отложенного связывания для ссылок на приложения, которые публикуются органически. Отложенное связывание доступно только для рекламных продуктов.   -  person Ming Li    schedule 04.11.2014
comment
Спасибо @MingLi, я собираюсь провести рекламную кампанию. Любые рекомендации о том, как проверить, работают ли ссылки приложений? Просто запустите рекламу, нацеленную на меня, или вы знаете что-нибудь более умное?   -  person d2vid    schedule 04.11.2014
comment
Использование предварительного просмотра рекламы и мест размещения: просмотр на мобильном устройстве, чтобы реклама отображалась в моей ленте. По-прежнему нет отложенной ссылки на приложение после установки из Play Store. @MingLi Должна ли это буквально быть настоящая реклама, чтобы отложенные ссылки работали, а не просто предварительный просмотр рекламы?   -  person d2vid    schedule 04.11.2014
comment
Здравствуйте, столкнулся с точно такой же проблемой. Объявление в моей ленте Facebook приводит меня в магазин игр, и когда я его устанавливаю, я получаю только {success:true}. Пожалуйста, вы решили эту проблему? Спасибо   -  person bakua    schedule 07.11.2014
comment
Я не смог решить эту проблему, даже при запуске реальной рекламной кампании. Похоже, что ссылки на отложенные приложения facebook на Android могут просто не работать. Также беспокоит то, что поиск в Google для fetchDeferredAppLinkData возвращает этот вопрос как один из самых популярных, кажется, что эта область довольно не исследована.   -  person d2vid    schedule 10.11.2014
comment
@MingLi это все еще происходит? Я пытаюсь использовать отложенные ссылки с AppLinks в своем приложении ios. Насколько я вижу в документации, в нем говорится fetchDeferredAppLink: вызовите этот метод из основного потока, чтобы получить данные отложенной ссылки на приложение, если вы используете рекламу взаимодействия с мобильным приложением. Есть ли способ проверить, работают ли они, прежде чем загружать их в App Store? Спасибо   -  person Joan Cardona    schedule 26.05.2015
comment
@d2vid, как вы получаете AppLinkData.CompletionHandler()? AppLinkData имеет только ICompletionHandler, который я могу использовать. Вы создали конкретный класс, производный от него, и используете его здесь? Просто интересно, как выглядит ваш CompletionHandler. Спасибо!   -  person Euridice01    schedule 19.11.2016


Ответы (5)


Похоже, 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. Необходимо удалить и переустановить приложение после отправки отложенной прямой ссылки. Удаление также может быть выполнено перед отправкой ссылки.

person Vijay Raghavan    schedule 20.05.2015
comment
Можете ли вы дать больше отзывов о том, что вы сделали, чтобы заставить его работать? Это не работает для меня вообще. - person Radu; 12.06.2015
comment
Чтобы настроить отложенные прямые ссылки, выполните следующие действия: разработчики. facebook.com/docs/app-ads/ Эта ссылка для тестирования: Developers.facebook.com/tools/app-ads-helper Перейдите в Помощник по рекламе в приложениях – › Выберите свое приложение – › Протестируйте ссылку на контент – › Введите URL ссылки на контент – › Отметьте Отложенная отправка – › Отправить на Android. Примечание. 1. Чтобы это работало, на вашем устройстве должно быть установлено приложение FB, и вы должны войти в ту же учетную запись разработчика. 2. Необходимо удалить и переустановить приложение после отправки отложенной прямой ссылки. Удаление также может быть выполнено перед отправкой ссылки. - person Vijay Raghavan; 14.07.2015

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

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

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

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

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

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

person Alex Austin    schedule 06.09.2015
comment
Привет, Алекс, спасибо, что поделился! Когда приложение открывается и отправляет сообщение POST в конечную точку facebook, указанную выше, какие ответы дает Facebook? Нужно ли использовать глубокую ссылку, чтобы получить ответ на этой конечной точке? Я пытаюсь ответить на вопрос: для данной установки приложения она пришла из Facebook, например, пользователь щелкнул рекламу, а затем установил. - person Alex Black; 26.07.2017
comment
Привет, Алекс. Тебе следует использовать Branch, так как мы справимся со всем этим за тебя :). Однако, чтобы ответить на ваш вопрос, Facebook отвечает словарем JSON с ключом applink_url, содержащим значение поля, поэтому вам нужно будет что-то добавить туда, чтобы пройти, и я полагаю, что есть проверки регулярных выражений URI. Обратите внимание, что это работает только в том случае, если пользователь действительно нажимает на объявление, а не на просмотр или что-то в этом роде. - person Alex Austin; 28.07.2017
comment
Спасибо! Документы найдены здесь: developers.facebook.com/docs/graph- api/reference/application/ Пытался использовать ветвь в нескольких сценариях (не в этом), столкнулся с проблемами, с тех пор не смотрел на это. - person Alex Black; 28.07.2017

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

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

person d2vid    schedule 02.12.2014
comment
Мне так и не удалось получить ответ от Facebook по этому поводу, поэтому я прекратил рекламу. - person d2vid; 20.05.2015
comment
Так вы когда-нибудь исправляли это? - person Radu; 12.06.2015

Как отвечает команда 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, я получил нулевое значение. ( Интересно, почему ? )

Команда ФБ:

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

...

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

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

С наилучшими пожеланиями,

Джек

person jczerski    schedule 07.01.2016

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

person Sivakumar Chellamuthu    schedule 04.01.2017