我正在关注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_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>
答案 0 :(得分:3)
好的,这就是那些遇到同样问题的人的解决方法。
如果应用程序多次向Facebook Messenger发布相同的图像,则Messenger会将除第一个图像之外的所有图像视为重复图像,并且不会附加元数据。 (最终超时,但不能过分关注确切的持续时间)
我的解决方法如下:每当您的应用发布到信使时,请在随机位置放置一个随机像素,以确保图片的签名发生变化。我还没有尝试,但我认为更改像素的alpha值会更好地使其对用户不那么显眼。
答案 1 :(得分:0)
是的,我可以确认每次使用不同的图像都可以解决此问题。