Facebook Messenger 发送元数据 (Android)

Facebook Messenger sending metadata (Android)

我正在关注 this guide 创建一个将图像发送到 Facebook Messenger 的应用程序。

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 自己的示例代码相同。图像被正确发送到识别我的应用程序进行优化并提供回复按钮的信使。但是,我无法发送元数据。当按下 REPLY 按钮时,应该在额外包中的所有内容(EXTRA_IS_REPLYEXTRA_THREAD_TOKENEXTRA_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>

好的,这是针对遇到相同问题的人的解决方法。

如果应用程序多次向 Facebook Messenger 发布同一张图片,Messenger 会将除第一张图片以外的所有图片都视为重复图片,并且不会附加元数据。 (有一个最终的超时,但不在乎计算出确切的持续时间)

我的解决方法如下:每次您的应用向 Messenger 发帖时,让它在随机位置放置一个随机像素,以确保图像的签名发生变化。我没有尝试过,但我认为更改像素的 alpha 值会更好地降低它对用户的显眼程度。

是的,我可以确认每次使用不同的图像确实可以解决此问题。