跳转到主要内容

概述

时间敏感的消息对于适当的用户体验和成功的应用程序/网站至关重要。OneSignal 的时间操作符允许您轻松追踪任何过去、现在或未来事件的“时间流逝大于或小于”。 常见用例:
  • 购物车放弃消息:用户将商品添加到购物车。如果他们在一定时间后未能结账,发送提醒消息至关重要。
  • 订阅过期提醒:在订阅结束前提前通知用户,甚至可以创建滴水序列,如果他们忘记时间并忘记在订阅后重新注册。
  • 重要活动:如果您的应用中有用户注册的活动,请提前几天、几小时和/或几分钟提醒他们!
  • 里程碑:提醒用户需要完成或发送的某些里程碑。
  • 生日消息:每年发送自动生日祝福。

时间操作符如何工作

时间操作符通过将以秒为单位的 unix 时间戳作为数据标签值添加来工作。时间戳必须是以秒为单位的整数值(10 位数字),例如:event : 1600968090,其中 event 可以是您想要跟踪的任何内容,并且是用于识别事件的标签”键”,1600968090 是事件的过去、现在或未来日期,以 Unix 时间戳秒格式 中的整数表示。 然后通过用户标签细分筛选器API 创建通知 tags 筛选器,您可以根据自该日期以来经过的时间长度或该日期发生前的时间来定位用户。有关更多详细信息,请参阅旅程
“时间流逝”操作符仅在付费计划中可用。在免费计划中, 您仍然可以使用默认时间细分筛选器:首次会话最后一次 会话

时间流逝操作符

OneSignal 支持使用 Time Elapsed Greater ThanTime Elapsed Less Than 操作符基于自您指定的特定时间戳以来经过的时间长度创建细分的能力。(请注意,只有具有 unix 时间戳值的数据标签才能以这种方式进行比较。) 这允许比上述自动提供的首次会话和最后一次会话筛选器更广泛的基于时间的操作范围。 使用特定时间戳和”时间流逝”操作符可以让您,例如,设置用户在您的应用中最后一次执行操作的时间,然后设置自动通知,在指定持续时间过去后向他们发送通知。
1

设置数据标签

数据标签采用 key : value 格式。key 应该是某个事件名称或标识符,而 value 需要是以秒为单位的 unix 时间戳。
2

创建细分

使用 User Tag 筛选器,在 KEY 字段中设置标签 key,使用 Time Elapsed Greater Than 操作符,以及所需的秒数作为 VALUE

设置时间流逝细分筛选器

另一个示例,您可以向在您发送验证邮件一周内未确认其邮箱地址的用户发送通知。通过使用 intro_email_time 键设置数据标签,然后使用 “Time Elapsed Greater Than” 和值 604800(7 天 X 24 小时 X 60 分钟 X 60 秒)。
3

使用通知或消息实现自动化

您可以将其作为一次性消息发送,或者如果您想要自动向甚至落入该类别的新用户发送邮件,可以使用自动化消息与此操作符来自动化入门或参与操作。
如果您的站点有结账或支付系统,时间操作符非常适合您的用例。更多详细信息请参见我们的购物车放弃指南。

在特定日期之前 X 天定位用户

您也可以在目标日期_之前_触发消息(例如,在用户订阅到期前 2 天发送提醒):
  • 将未来日期转换为 Unix 时间戳并标记用户。
  • 在您的细分中,使用 Time Elapsed Greater Than 并将值设置为负数(例如,-172800 表示 2 天之前)。

用于在日期之前定位用户的细分

定位生日

您可以通过将下一个即将到来的生日捕获为 unix 时间戳并设置定期旅程来设置生日消息,以便每年发送。由于时区和闰年,日期可能不是 100% 准确,但会非常接近。 当询问用户生日时,将月份和日期转换为基于当前年份的 unix 时间戳。将该日期从当前日期中减去。如果日期尚未过去,则将其标记给用户,如果日期已经过去,则将年份增加 1 并用未来日期标记用户。 设置生日标签的示例 JavaScript 代码:
javascript
//Data you need to set:
let birthdayMonth = 0;//Format is MM 0 indexed, January = 0, December = 11
let birthdayDay = 29;//Format is DD

let currentDate = new Date();
let currentDateUnixTimestamp = Math.round(currentDate.getTime() / 1000);
let currentYear = currentDate.getFullYear();
let birthdayMonthDay = new Date(currentYear, birthdayMonth, birthdayDay); // Format YYYY, MM, DD
let birthdayUnixTimestamp = Math.round(birthdayMonthDay.getTime() /1000);
let currentBirthdayPassed = Math.sign(birthdayUnixTimestamp - currentDateUnixTimestamp);

let birthdayTimestamp = 0;

if (currentBirthdayPassed === 1) {
console.log("birthday has not occurred yet!")
birthdayTimestamp = birthdayUnixTimestamp

} else if (currentBirthdayPassed === -1) {
console.log("we will celebrate next year")
birthdayMonthDay = new Date(currentYear + 1, birthdayMonth, birthdayDay);
birthdayUnixTimestamp = Math.round(birthdayMonthDay.getTime() /1000);
birthdayTimestamp = birthdayUnixTimestamp;

} else {
console.log("birthdate time not set properly")
}
OneSignal.push(function() {
OneSignal.User.addTag("birthday", birthdayTimestamp);
});
使用 birthday 标签和 time elapsed greater than 0 秒创建生日细分 当用户的下一个生日现在过去时,他们将自动添加到此细分中。

生日触发器的细分

创建您的生日消息模板,这是您将在他们生日时发送的消息。由于日期可能不是 100% 准确,您可以说类似”又到了一年中的这个时候!“之类的话。 然后在您的生日旅程中,将重新进入规则设置为 52 周,这样它将每年发送。
I