Facebook Messenger发送元数据(Android)

时间:2015-06-10 23:42:14

标签: android facebook facebook-messenger

我正在关注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按钮。但是,我无法获取发送的元数据。当按下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>

2 个答案:

答案 0 :(得分:3)

好的,这就是那些遇到同样问题的人的解决方法。

如果应用程序多次向Facebook Messenger发布相同的图像,则Messenger会将除第一个图像之外的所有图像视为重复图像,并且不会附加元数据。 (最终超时,但不能过分关注确切的持续时间)

我的解决方法如下:每当您的应用发布到信使时,请在随机位置放置一个随机像素,以确保图片的签名发生变化。我还没有尝试,但我认为更改像素的alpha值会更好地使其对用户不那么显眼。

答案 1 :(得分:0)

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