Facebook Messenger отправляет метаданные (Android)

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

String mimeType = "image/png";
Uri contentUri = Uri.parse("android.resource://com.test.test/drawable/foobar");

String metadata = "{ \"name\": \"baz\" }";
ShareToMessengerParams params = ShareToMessengerParams.newBuilder(contentUri, mimeType).setMetaData(metadata).build();
MessengerUtils.shareToMessenger(this, REQUEST_CODE_SHARE_TO_MESSENGER, params);

Код довольно прост и почти идентичен собственному примеру кода Facebook. Изображение правильно отправляется в мессенджер, который распознает мое приложение как оптимизированное и предоставляет кнопку ОТВЕТИТЬ. Однако у меня возникли проблемы с отправкой метаданных. При нажатии кнопки ОТВЕТ все, что должно быть в дополнительном пакете (EXTRA_IS_REPLY, EXTRA_THREAD_TOKEN, EXTRA_PARTICIPANTS), отправляется обратно в приложение, но не метаданные. Любая помощь будет оценена.

Ниже приведен фрагмент из манифеста:

    <!-- Activities -->
    <activity
        android:name=".MainActivity"
        android:windowSoftInputMode="stateHidden"
        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>
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="com.facebook.orca.category.PLATFORM_THREAD_20150311"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.PICK" />
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="com.facebook.orca.category.PLATFORM_THREAD_20150314"/>
        </intent-filter>
    </activity>

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


person DanielK    schedule 10.06.2015    source источник
comment
Что вы получаете, когда получаете метаданные? У вас есть пример кода того, как вы его получаете?   -  person Shireesh Asthana    schedule 22.06.2015
comment
Я думаю, что нашел решение и разместил ответ ниже.   -  person DanielK    schedule 23.06.2015
comment
Я столкнулся с той же проблемой. Я не могу вернуть метаданные в свое приложение. Требуется ли одобрение приложения Facebook для работы этой функции?   -  person Sumit Chourasia    schedule 09.07.2015


Ответы (2)


Итак, вот обходной путь для тех, у кого такая же проблема.

Если приложение публикует одно и то же изображение в Facebook Messenger несколько раз, Messenger рассматривает все изображения, кроме первого, как дубликаты и не прикрепляет метаданные. (Есть возможный тайм-аут, но ему все равно, чтобы выяснить точную продолжительность)

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

person DanielK    schedule 22.06.2015
comment
Я столкнулся с той же проблемой. Я не могу вернуть метаданные в свое приложение. Требуется ли одобрение приложения Facebook для работы этой функции? - person Sumit Chourasia; 09.07.2015
comment
@SumitChurasia Я не думаю, что вам нужно одобрение для работы базового набора функций. Я предлагаю сначала запустить образец приложения Facebook, содержащийся в SDK, и посмотреть, работает ли он. - person DanielK; 10.07.2015
comment
Спасибо @DanielK, это сэкономило много времени! - person kinshukkar; 24.07.2015

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

person yrizk    schedule 23.06.2015
comment
Это не совсем ответ на вопрос. - person Gary Storey; 23.06.2015
comment
Да, это должен быть комментарий вместо этого. В любом случае, спасибо за подтверждение. - person DanielK; 24.06.2015
comment
да, я хотел просто проголосовать за это, но я очень новичок в этом, и у меня нет представителя. - person yrizk; 24.06.2015