【问题标题】:Unable to update a getstream activity created from json无法更新从 json 创建的 getstream 活动
【发布时间】:2017-05-23 03:06:20
【问题描述】:

如果我们在从流中检索后更新活动,我们就可以更新

String feedId = "ef202000-3f6b-11e7-8080-800171e94936";
Feed feed = StreamUtils.getStreamClient().newFeed(Constants.FEED_SLUG, "feed_66_103");
NotificationActivityServiceImpl<MessageItem> userMessagesActivityService = feed.newNotificationActivityService(MessageItem.class);
FeedFilter filter = new FeedFilter.Builder().withIdGreaterThanEquals(feedId).withLimit(1).build();
StreamResponse<NotificationActivity<MessageItem>> userMessageItems = userMessagesActivityService.getActivities(filter, false, false);
if (userMessageItems != null && userMessageItems.getResults().size() != 0) {
    for (NotificationActivity<MessageItem> messageItemNotificationActivity : userMessageItems.getResults()) {
        for (MessageItem messageItem : messageItemNotificationActivity.getActivities()) {
            messageItem.setMessage_status(MESSAGE_STATUS_READ);
            userMessagesActivityService.updateActivities(Collections.singletonList(messageItem));
            Log.d("Message json", new Gson().toJson(messageItem));
        }
    }
}

但是,如果我们通过构建活动来更新它,我们无法更新

Feed feed = StreamUtils.getStreamClient().newFeed(Constants.FEED_SLUG, "chat_66_103");
String messageJson = "{\"channel_id\":\"feed_66_103\",\"message\":{\"message_text\":\"Test message\"},\"message_status\":\"DELIVERED\",\"receivers\":[103],\"actor\":\"66\",\"foreignId\":\"66_103_1495511846405\",\"id\":\"ef202000-3f6b-11e7-8080-800171e94936\",\"object\":\"delivery_message\",\"time\":\"May 23, 2017 9:27:26 AM\",\"to\":[],\"verb\":\"delivery_message\"}";
MessageItem messageItem = new Gson().fromJson(messageJson, MessageItem.class);
messageItem.setMessage_status(MESSAGE_STATUS_READ);
NotificationActivityServiceImpl<MessageItem> userMessagesActivityService = feed.newNotificationActivityService(MessageItem.class);
userMessagesActivityService.updateActivities(Collections.singletonList(messageItem));
Log.d("Message json", new Gson().toJson(messageItem));

在 setMessage_status 方法中,我正在更改变量 object、verb、message_status 的值

这里甚至是打印相同对象的日志。我们不知道我们错过了什么。

我们也从 python 客户端尝试过。那里也有同样的问题。

【问题讨论】:

  • 你不能更新时间或foreign_id字段
  • 我做了一些小径来测试我能更新或不能更新的天气。并且在发布问题时忘记删除该行。虽然我没有更新时间,但它不起作用
  • @TommasoBarbugli 你能试试吗?

标签: android json getstream-io gson


【解决方案1】:

更新活动是使用您的外国 ID 完成的。目前,您的有效负载在名为 foreignId 的字段中发送此值,我们的端点将期待 foreign_id

【讨论】:

  • 感谢您的回复。但是对于 BaseActivity 模型,在将 json 序列化为 java 模型时,它会将 foreignId 值分配给 foreign_id .. 即使我能够从 java 模型记录和访问它。下面是 BaseActivity 中存在的 sn-p @JsonProperty("foreign_id") protected String foreignId;即使我使用 setForeignId 方法设置了 foreignId,但仍然无法更新。
  • 好的,您的代码没有显示。您的代码的最后一行转储了 JSON,您可以将其添加到您的原始问题中以便我们也可以看到它吗? Log.d("Message json", new Gson().toJson(messageItem));
  • 此外,我们的 SDK 通常会从更新调用返回数据负载,就像您在此处的调用一样。您能否检查返回值并将其也添加到您的问题中? userMessagesActivityService.updateActivities(Collections.singletonList(messageItem));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
相关资源
最近更新 更多