2015-01-30 2 views
2

У меня с трудом получается, что AppLinks работает в моем приложении для Android, я позвоню в MyApp. Я следил за документацией на сайте разработчиков Facebook для интеграции ссылок приложений в существующий контент. Инструмент Facebook Debug (https://developers.facebook.com/tools/debug/og/object/) показывает мой веб-странице получать Царапины правильно, и показывает свои 3 мета-теги для applinks:Facebook AppLinks не передает URI для Android-приложения

<meta property="al:android:app_name" content="MyApp" /> 
<meta property="al:android:package" content="com.myapp.android" /> 
<meta property="al:android:url" content="myapp://myapphost/myapppath" /> 

У меня есть открытые Истории Graph, что я выкладываю в Facebook, используя Share Диалог, который разделить URL I просто пропустили инструмент Debug от Facebook. Эти Open Graph Stories были просмотрены/одобрены Facebook и показаны в новостных лентах. При нажатии на Facebook в браузере они переходят к URL-адресу, связанному со Историей. При нажатии на Facebook для Android они открывают только активность по умолчанию MyApp (MainActivity), а не активность, которая обрабатывает схему URI (UriLoadingActivity). Я знаю, что схема URI работает, потому что я использую его в уведомлениях кнопочных: когда пользователь нажимает на уведомление, он принимает их к UriLoadingActivity:

<activity 
     android:name="com.myapp.android.activity.UriLoadingActivity" 
     android:parentActivityName="com.myapp.android.activity.MainActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.GET_CONTENT" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.BROWSABLE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 

      <data 
       android:host="myapphost" 
       android:scheme="myapp" /> 
     </intent-filter> 

     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.myapp.android.activity.MainActivity" /> 
    </activity> 

У меня есть журналы в OnCreate() из MainActivity для проверки Intent данные, переданные из Facebook. Таким образом, я вижу имя и имя приложения Facebook в пакете referer_app_link. Я также получаю target_url, у которого есть URL-адрес веб-страницы, который я разместил в своей Open Graph Story, однако я не вижу ни одной из данных AppLink, которые я предоставил в тегах Meta на моей веб-странице.

Есть ли у кого-нибудь еще подобные проблемы?

Обновление: вот код, который я использую для публикации в FB.

private void shareToFacebook(Bitmap image) { 

    if (FacebookDialog.canPresentOpenGraphActionDialog(
      getApplicationContext(), 
      FacebookDialog.OpenGraphActionDialogFeature.OG_ACTION_DIALOG)) { 

     OpenGraphObject myObject = OpenGraphObject.Factory 
       .createForPost("myapp:object"); 
     myObject.setProperty("title", "My Title"); 

     myObject.setUrl(Constants.SHARE_URL); 

     myObject.setProperty("description", 
         "Just Posting to the News Feed!"); 

     OpenGraphAction action = GraphObject.Factory 
       .create(OpenGraphAction.class); 
     action.setType("myapp:action"); 
     action.setProperty("object", myObject); 

     List<Bitmap> images = new ArrayList<Bitmap>(); 
     images.add(image); 

     FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(
       this, action, "object").setImageAttachmentsForObject(
       "object", images, false).build(); 
     uiHelper.trackPendingDialogCall(shareDialog.present()); 
    } 
} 
+0

Можете ли вы добавить фрагменты кода о том, как вы делаете эту акцию? Я подозреваю, что приложение FB фактически открывает ваше приложение на старом протоколе глубоких ссылок (в настройках вашего приложения), а не на приложениях, и хочу посмотреть, могу ли я каким-то образом его воспроизвести. –

+0

Я разместил свою долю выше. У меня есть переключатель Deep Linking включен в настройках Facebook. Если я отключу его, он просто откроет общий URL-адрес в браузере Android в приложении Android. –

ответ

0

Извините, на это потребовалось столько времени, чтобы ответить.

Вы используете Object API для создания пользовательского объекта OG. Если вы хотите, чтобы объект OG был включен в приложение, то URL-адрес этого объекта (myObject.setUrl) должен быть canonical_url из объекта хостинга App Link (это означает, что вам нужно создать его через API хостинга App Link). Вы не можете использовать свой собственный URL-адрес, поскольку он не будет сливаться должным образом. Это ограничение API-интерфейса Object. Отсюда, у вас есть два варианта:

  1. Создание URL App Link с помощью App Link хостинг API https://developers.facebook.com/docs/applinks/hosting-api и использовать его в качестве свойства URL-адрес на вашем объекте OG.

  2. Поскольку у вас есть веб-сайт, используйте URL-адреса с веб-сайта для размещения своих объектов OG, а не с помощью API-интерфейса объекта (это может быть невозможно, если вы хотите, чтобы пользовательские объекты).

+0

Благодарим за ответ Мин, в качестве продолжения - у нас есть веб-сайт, и нам нравится рассказывать истории в браузере, открывая страницы, связанные с этими историями. По этой причине мы хотели бы избегать использования API хостинга. Тем не менее, нам также нравится, когда опубликованные пользователями истории используют изображение из приложения для публикации. Есть ли способ разместить объекты OG, но все же есть пользовательский образ для сообщений? Кроме того, знаете ли вы, есть ли какие-либо планы по обновлению API-интерфейса Object, чтобы они могли ссылаться на наши собственные веб-страницы, но использовать пользовательские объекты OG (например, мы делаем), но у вас работают ссылки на приложения? –

+0

Вы можете прикрепить изображение к действию OG, а не к объекту, таким образом вы можете использовать свои собственные размещенные объекты и все еще иметь вложения. AFAIK не планирует подключать объекты API объекта с ссылками на приложения с вашего собственного сайта. –

Смежные вопросы