首页 > 其他分享 >极光笔记 | EngageLab Push的多时区解决方案

极光笔记 | EngageLab Push的多时区解决方案

时间:2023-05-26 21:01:51浏览次数:39  
标签:03 00 18 EngageLab Push 定时 推送 时区

01、引言

多时区问题一直是全球客户和终端用户面临的挑战之一。EngageLab Push 致力于解决这个问题,确保全球各地的终端用户可以平等地享受到同样的推送服务,同时让客户能够更好地管理不同时区的应用和对应的终端用户。


02、解决多时区问题的总体方案


极光笔记 | EngageLab Push的多时区解决方案_运营


1、在服务器端,所有涉及时间的信息统一以时间戳形式存储,

2、portal 端的展示,以用户给应用设置的时区对应的时间展示

3、终端和服务器交互协议中的时间以时间戳来传递,终端再根据本地时区信息将时间戳转换为本地时间


03、管理系统多时区


管理员在 portal 上创建应用,再给应用设置时区,这些信息都会保存到数据库中,跟时间相关的信息都以时间戳的格式存储在数据库中。当管理员查询应用相关信息时,对于时间相关信息,系统将时间戳转换成应用所在时区的本地时间展示给管理员

极光笔记 | EngageLab Push的多时区解决方案_推送_02



04、业务处理多时区


推送业务按推送时效性来分有两种推送方式,立即推送和定时推送,立即推送跟时区特性无关,点击推送时就立即推送,但是定时推送跟时区相关,到底是以应用所在时区的时间进行定时推送,还是以终端所在时区对应的时间进行定时推送呢,这两种定时推送都存在相应的场景。

 预设条件


如下图

  • 应用所在时区为东6区
  • 服务器部署在东8区
  • 终端用户分布在东4区、东1区、西3区

极光笔记 | EngageLab Push的多时区解决方案_推送_03


场景1:根据应用所在时区的时间进行定时推送场景

比如某款电商应用,计划在中午12点发起秒杀活动,希望在12点钟准时给用户推送提示用户进入秒杀页面参加活动。这种场景就需要用到根据应用所在时区的时间进行定时推送。


1、现在应用需要在东六区的2023-03-18 12:00:00 进行秒杀活动,于是在东六区的2023-03-18 10:00:00设置了一个定时推送任务,该任务的定时时间为应用(应用归属于组织,因此应用的时区继承了组织的时区)所在时区的2023-03-18 12:00:00

极光笔记 | EngageLab Push的多时区解决方案_终端用户_04

2、东六区的2023-03-18 12:00:00,转换为服务器的东8区的时间为:2023-03-18 14:00:00,所以在服务器的2023-03-18 14:00:00, 触发定时任务,将消息推送给对应的终端用户。

3、终端用户在同一时刻收到秒杀的推广消息。本地时间分别是

  • 东4区的2023-03-18 10:00:00
  • 东1区的2023-03-18 07:00:00
  • 西3区的2023-03-18 03:00:00


场景2:根据终端所在时区的时间进行定时推送场景



比如说有个早间新闻播报的应用,需要在早上8点定时将最新的资讯推送到终端用户,如果以应用所在时区的时间来推送,应用所在时区的早上8点可能是终端所在时区的凌晨3点钟,这个时候经消息推送给终端用户,显然是不合适的,因此需要以终端用户所在时区的早上8点进行定时推送。


1、管理人员设置了一个定时推送任务,该任务的定时时间为终端用户所在时区的2023-03-18 08:00:00进行推送

极光笔记 | EngageLab Push的多时区解决方案_推送_05


2、服务器定时扫描定时推送任务

  • 服务器发现该定时推送的目前中有东4区的终端用户,东4区的2023-03-18 08:00:00转换为服务器的东8区的时间为2023-03-18 12:00:00,所以在服务器的2023-03-18 12:00:00, 触发定时推送任务,将消息推送给东4区的终端用户。
  • 服务器发现该定时推送的目前中有东1区的终端用户,东1区的2023-03-18 08:00:00转换为服务器的东8区的时间为2023-03-18 15:00:00,所以在服务器的2023-03-18 15:00:00, 触发定时推送任务,将消息推送给东1区的终端用户。
  • 服务器发现该定时推送的目前中有西3区的终端用户,西3区的2023-03-18 08:00:00转换为服务器的东8区的时间为2023-03-18 19:00:00,所以在服务器的2023-03-18 19:00:00, 触发定时推送任务,将消息推送给西1区的终端用户。

3、终端用户都是本地时间的2023-03-18 08:00:00点收到推送消息


业务流程

1、终端时区的上报

每个终端在登陆服务器时,就把当前终端所在的时区上报给服务,服务器根据时区将用户信息分组存储

极光笔记 | EngageLab Push的多时区解决方案_推送_06


2、定时推送的设置

管理人员在设置定时推送任务时根据任务特性选择是按应用所在时区定时推送还是按终端所在时区定时推送。服务器将这些定时推送任务信息保存到数据库中

极光笔记 | EngageLab Push的多时区解决方案_推送_07


3、定时推送的触发

服务器会启动一个定时扫描进程,去扫描数据库中的定时推送任务是否达到某个时区所定时的时间,如果到了,就将消息推送推送给该时区的用户。

极光笔记 | EngageLab Push的多时区解决方案_推送_08


关于极光

极光(Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的客户互动和营销科技服务商。成立之初,极光专注于为企业提供稳定高效的消息推送服务,凭借先发优势,已经成长为市场份额遥遥领先的移动消息推送服务商。随着企业对客户触达和营销增长需求的不断加强,极光前瞻性地推出了消息云和营销云等解决方案,帮助企业实现多渠道的客户触达和互动需求,以及人工智能和大数据驱动的营销科技应用,助力企业数字化转型。



标签:03,00,18,EngageLab,Push,定时,推送,时区
From: https://blog.51cto.com/u_15178002/6358782

相关文章

  • MobPush iOS端合规指南
    2021年5月1日起,由国家互联网信息办公室、工业和信息化部、公安部、国家市场监督管理总局联合制定了《常见类型移动互联网应用程序必要个人信息范围规定》(简称“App必要个人信息范围规定”)已正式施行。“App必要个人信息范围规定”不仅明确常见39种类型的App必要个人信息范围,而且明......
  • git push之后如何重新撤回?
    主要是参照了这位大哥的文章(https://www.jb51.net/article/192271.htm)二次参考:gitpush之后如何重新撤回-简书(jianshu.com)分为两种方法第一种方法是:gitreset--hardgitreset--hardversion//这个version可以通过Gitlog来拿,也可以通过github上去看commit的提......
  • MobPush 合规指南
    确保APP有《隐私政策》您需要确保App有《隐私政策》,并且在用户首次启动App时就弹出《隐私政策》取得用户同意。添加MobTech隐私协议MobPushSDK隐私政策您务必告知用户您选择MobSDK服务,请在《隐私政策》中增加如下参考条款:MobPushSDK 我们使用了第三方(上海掌之淘信息技术有限公司,......
  • 新建项目git push报错
    连接好远程仓库之后push,发现报错git要求我们在第一次push之前先进行pull操作而执行pull之后,又报错:git提示:Thereisnotrackinginformationforthecurrentbranch.解决方法在终端输入:gitbranch--set-upstream-to=GYKG-invoice/mastermasterpull还报错:fatal:r......
  • 修改mysql时区
    1、查看mysql时区showvariableslike‘%time_zone%’;如果system_time_zone和time_zone均为UTC,则表示当前时区为英国格林威治中时区即零时区。中国北京为东八区比零时区早8小时2、设置时区方法1:setglobaltime_zone='+8:00';setti......
  • MobTech MobPush|ChatGPT辅助消息推送,实现文案千人千版
    消息推送的千人千面困境为了吸引用户的注意力,增加用户的活跃度和留存率,提升应用的流量和收入,手机应用程序往往希望千人千面地向用户推送通知,即根据用户的特征和需求,为每个用户推送合适的消息内容,以有针对性地获得用户的关注。目前,消息推送通过智能标签能力已经可以实现用户画像千人......
  • 【PHP兴趣部落-08】PHP中时区设置的三种方法(timezone)
    一、三种方法php中时区默认是格林尼治时间,和中国时差八个小时。现在根据需要将时间设置为中国时间,下面整理了三种方法。方法1:最好的方法在php.ini里加上找到date.timezone项,设置date.timezone=“Asia/Shanghai”,重启环境就ok了。方法2:在需要用到这些时间函数的时候,在页面添......
  • APNs(Apple Push Notification server)服务器代码C#编写
    PushNotification使用最简单的方式通过APNs发送通知,本库使用C#写的服务器端代码,C/Objective-C客户端代码原地址Github地址APNs概述Apple推送通知服务,是一个稳健性和高效率性的远程通知,具有中心化的特性。APNs可以传送通知消息到iOS,WatchOS,tvOS和macOS的设备。在应用初始化......
  • python datetime时区转换
    比如把格林威治时间转换为上海时间:fromdatetimeimportdatetimeimportpytzprint('格林威治时间:',datetime.now().strftime("%Y-%m-%d_%H-%M-%S"))print('上海时间:',datetime.now().astimezone(pytz.timezone("Asia/Shanghai")).strftime("......
  • jackson配置响应时间格式、时区(查询时间与当地时间不一致)
    配置文件:application.ymlspring:jackson:date-format:yyyy-MM-ddHH:mm:sstime-zone:GMT+8输出格式:yyyy-MM-ddHH:mm:ssGMT+8:就是格林威治标准时间的英文缩写(GreenwichMeanTime格林尼治标准时间),是世界标准时间.gmt+8是格林威治时间+8小时。中国所在时区就是......