提醒
使用基于笔记的提醒
我们可以在用户帐户内的笔记上设置提醒,使用户可以:
- 在预定义的时间接收提醒。在印象笔记官方的客户端应用程序中,提醒的形式可能是本地通知,图标徽章等等。这会根据应用程序的不同而变化,并且会有一封印象笔记发送的当日邮件,邮件内会有一个列表列出所有当日截止的提醒(如果用户选择了这个功能的话)。
- 将一条或多条笔记放置在一个笔记列表(比如笔记本的内容,搜索的结果,浏览某个标签——几乎所有的会列出笔记列表的情况)的最上方。
这项功能是由 NoteAttributes
数据结构中的三条属性来控制的:reminderTime
,reminderOrder
,reminderDoneTime
。
reminderOrder
设置长整形的 reminderOrder
属性会完成下面三件事:
- 为要同步到印象笔记的笔记设置一个提醒。所有其他的印象笔记应用——还有第三方应用——都可以访问到这个提醒的数据。
- 强制这条笔记显示在笔记列表的最上方或靠近最上方(这要看设定了这个属性的笔记具体有多少条)。
- 控制这条笔记在都设置了
reminderOrder
的笔记中的位置。
最后的这个作用可能需要一些解释:
打个比方,如果一个笔记本包含10条笔记并且其中的3条都设置了 reminderOrder
,这3条笔记就会按 reminderOrder
的值进行降序排序。印象笔记官方的应用在设置此值的时候,会将其赋为 Unix 时间戳的毫秒数表示形式,如此可指示用户是何时将笔记标为一个提醒的。第三方应用在为笔记设置 remindeOrder
的时候也应该做类似的处理。
reminderTime
为笔记设定 reminderTime
值指示着用户希望在特定的日期、时间可以提醒这条笔记。那么当到了 reminderTime
属性储存的那个日期时间的时候,就会针对各个不同的平台使用相应的通知手段,触发一个通知。这个值是一个用毫秒数来表示的 Unix 时间戳。
注意如果 reminderTime
被设置在一个没有设置 reminderOrder
属性的笔记上,那么印象笔记服务会自动为 reminderOrder
赋一个值。尽管如此,你还是应当理解 reminderOrder
的工作原理和手动设置的方法。
reminderDoneTime
当用户标记一个含有提醒的笔记为 “done” 的时候,这个属性就被设置为用户完成此操作(第三方应用也只能在同样的情境下才能做此操作)的日期和时间——也是用 Unix 时间戳的毫秒数表示形式。使用此功能的第三方应用可能要在他们的 UI 里为已经完成的提醒作说明。
如果笔记的 reminderDoneTime
没有设置而 reminderTime
设置了,那么应当在 UI 中重新启用这个提醒。
重排提醒
使用 reminderOrder
的第三方应用可能要支持用户任意重排笔记(当然,这是一个相当高级的特性了,可能并非第三方应用的需求)。例如:
如果用户正在查看之前提到的那三条笔记的一个列表:
- 笔记 A (
reminderOrder
被设置为 10) - 笔记 B (
reminderOrder
被设置为 20) - 笔记 C (
reminderOrder
被设置为 30)
如果用户将笔记 A 拖拽到笔记 B 和笔记 C 之间,那么笔记 A 的 reminderOrder
的值就会被重设为位于笔记 B 和笔记 C 之间的值。在这里,笔记 A 的 reminderOrder
的值会应当被设为 25。实际运用中,这条被移动的笔记的 reminderOrder
应当被设置为相邻两条笔记的 reminderOrder
值的平均数。
手动调整设置了 reminderOrder
的笔记的次序是一个高阶操作;大多数开发者不需要关注这个功能除非它对他们自己的应用有益处。
注意:虽然技术上允许,但是上面例子中用的简单的整数是为了简化对概念的讲解,实际使用的时候应当避免这种简单的整数,要采用实际时间戳的值。
示例代码
下面的代码创建了一个新的笔记对象,设置了笔记的 NoteAttributes
结构中的 reminderOrder
和 reminderTime
属性,并且通过调用 NoteStore.createNote
创建了这条笔记。代码的最后一行将 reminderDoneTime
属性设置成了当前的时间,将这个提醒标为了 "done"。
要想搜索设置了 reminderOrder
(或者其他提醒相关的属性)的笔记,你可以使用 NoteStore.findNotesMetadata
结合 NoteFilter
实例: