Подтвердить что ты не робот

Android - общий доступ к содержимому Facebook

Это мой код, чтобы разделить высокий балл на Facebook:

ShareLinkContent content = new ShareLinkContent.Builder()
  .setImageUrl(Uri.parse("http://www.example.com/myicon.png"))
  .setContentTitle("I scored "+numPoints+" points!")
  .setContentUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.my.package"))
  .setContentDescription("Get the game free on Google Play and beat my score.")        
  .build();
ShareDialog shareDialog = new ShareDialog(this);
shareDialog.show(content);

И это отлично работает, когда URL-адрес - это какой-то случайный сайт (например, developers.facebook.com), но когда он ссылается на Google Play, заголовок содержимого и описание содержимого переписываются - заголовок заменяется заголовком из магазина Play и описание содержимого пустое.

Итак, как можно подключиться к приложению в Play Store, но сохранить пользовательский заголовок и описание? Я знаю, это возможно, потому что я видел, как другие приложения делают это:

enter image description here

4b9b3361

Ответ 1

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

Что касается того, как другие приложения получают это поведение, у меня есть предположение.

Если у вас есть веб-сайт, на котором вы можете добавить фиктивную страницу, вы можете сделать следующее:

<html>
  <head>
    <script type="text/javascript">
      window.location.replace('https://play.google.com/store/apps/details?id=com.example.client');
    </script>
  </head>
  <body></body>
</html>

Затем используйте setContentUrl(Uri.parse("https://example.com/android") для вашего ShareDialog, где url открывает страницу, которая обслуживает HTML выше.

Это автоматически отправит пользователей на страницу Google Play Store, когда они откроют эту страницу. Кнопка "Назад" должна работать, как если бы они сразу же попали на страницу Google Play Store.

Я попробовал просто использовать перенаправление HTTP вместо фактического размещения страницы, но это не сработало.


EDIT: Вы можете включить AppLinks метатеги в заголовке страницы, чтобы пропустить перенаправление на Android устройства.

<html>
<head><title>App Link</title>
    <meta property="fb:app_id" content="XXXXXXXXXXXXXXX"/>
    <meta property="al:ios:url" content="example://test"/>
    <meta property="al:ios:app_name" content="Example App"/>
    <meta property="al:ios:app_store_id" content="XXXXXXXXX"/>
    <meta property="al:android:package" content="com.example.client"/>
    <meta property="al:android:app_name" content="Example App"/>
    <meta property="al:android:url" content="example://test"/>
    <meta property="al:web:should_fallback" content="false"/>
    <meta http-equiv="refresh" content="0;url=http://play.google.com/store/apps/details?id=com.example.client"/>
</head>
<body>Redirecting...</body>
</html>

В этом показано, как обрабатывать ссылку в вашем приложении.

<activity
    android:name="com.example.client.MainActivity"
    android:label="@string/app_name">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

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

</activity>

Если приложение не установлено на устройстве, вы отправляетесь в Google Play Store (хотя и с помощью очень уродливого всплывающего окна, которое не происходит в обычном потоке ShareDialog, когда ссылка на Play Store используется напрямую).

Кроме того, Facebook будет создавать и размещать страницу для вас, если вы этого хотите. Пример HTML выше - с одной из их размещенных страниц (обратите внимание на различную реализацию перенаправления).

Ответ 2

Вы можете использовать метод deeplinking для достижения этого. Все, что вам нужно, это создать html-страницу и поместить все ссылки на магазины (Google Play, App Store) в метатег и попытаться поделиться этой ссылкой. Вы сможете добиться того, чего хотите, а также если пользователь откроет приложение на Android, он будет перенаправлен в Google Play, и если пользователь откроет приложение на iOS, он будет перенаправлен на страницу App Store.