swift - 按日期对 Gmail 线程进行排序

标签 swift google-api gmail gmail-api

我希望有人可以建议一种按日期对 Gmail 线程进行排序的好方法,而无需获取可能有数千个线程的详细信息。

现在我使用 threads.list获取线程列表,我使用它们返回的任何顺序。这大部分是正确的,因为它按相反的时间顺序返回线程。除了时间顺序显然是由线程中的第一条消息而不是线程的最新消息确定的。

这对于在列表顶部获取新消息很好,但如果有人对几天前开始的话题有新回复,那就不好了。我想把它放在列表的顶部,因为它是一条新消息。但是 threads.list 让它根据第一条消息进行排序。

我认为答案可能是根据 historyId 对线程进行排序。这确实按最近的消息排序。但它也会受到任何其他线程更改的影响。如果用户更新消息上的标签(例如,通过加注星标),historyId 会发生变化。然后邮件排序到顶部,即使它不是新的。

我可以使用 threads.get获取线程的详细信息,并在此基础上进行更智能的排序。但用户可能有数千个线程,我不想对每个线程都进行此调用。

有没有人有更好的方法?我错过了什么?

最佳答案

我不是开发人员,以前从未使用过 API,但我刚刚阅读了 API 文档,它似乎没有您想要的功能。

无论如何,这就是我在你的问题中的理解:

You want is organize threads by the latest message in each one.

我认为您可以使用 users.messages 的组合和 threads.list .在 users.messages 中,您将拥有 ThreadID:

threadId string The ID of the thread the message belongs to.

该方法将使用 user.messages 的日期将最新消息从新到旧组织起来,然后递归地通过 threadId 获取其原始线程并使用 threads.list 打印线程 通过他们最近收到的消息。

使用此方法,您将避免每个线程中的递归,从而节省资源和时间。

我不知道新消息如何受标签或加注星标的影响,您必须找出这一点。

如果我的回答不正确或误导,我提前道歉。

关于swift - 按日期对 Gmail 线程进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44635719/

相关文章:

swift - 核心蓝牙用数据创建CBUUID

swift - WebView 未加载到 tableViewCell 中

ios - 在没有任何 Storyboard引用的情况下在 Controller 之间传递数据

java - Android Studio ~ games.applications.played Api 错误,Apk 发布后分数不会提交

ios - Gmail 的收件箱文件夹路径?

java - 无法通过 gmail smtp 发送消息

ios - 错误套接字 SO_NOAPNFALLBK 失败 : [42] Protocol not available, 转储回溯

python - Gmail API : ModuleNotFoundError: No module named 'google'

javascript - JQuery 自动地理完成设置字符串长度

html - 电子邮件客户端支持 HTML 电子邮件中的 PNG 图像