zoukankan      html  css  js  c++  java
  • 消息推送

    一、消息推送功能

    1、点对点推送:

    1RegistrationID方式,RegistrationIDapp启动时由sdk发送给极光后台服务注册的用来识别本设备的唯一ID使用此种方式需要app后台服务自行保存设备与用户间的关联关系

    2alias别名,app启动sdk向极光注册时,将一个alias(一般是userID)上报给极光,极光后台负责将此alias与设备唯一ID RegistrationID关联起来,之后app后台可使用alias直接调用极光rest api进行消息推送

    2、广播推送

    优选方案:

    1)利用极光推送后台为本app保存的全量RegistrationID(或alias)、由极光找出需要推送的设备

    2)利用极光的延迟推送功能,使推送在一定时长内平均分配,而不是在太短时间内完成,以免短时间激活大量用户的读取,对App服务器造成太大的压力。

    3、组播推送

    可用作为组播筛选的选项:App版本,SDK版本,用户注册时间,用户活跃时间,用户所在地区、自定义Tag

    其中自定义tag一般为:性别、年龄段、喜好、关注等用户画像标签

    存储:  userID tag1|tag2|...|tagN   根据制定的列(tagX)可以快速的查询到符合该tag的用户集,输出到推送file进行推送;

    msgId tag1|tag2|...|tagN   tagX为消息属性的标签

    设计:(1)新增用户标签

    2)执行job对推送用户表新增tag列;选择用户方法:sql查询用户表,或用户行为分析给定的用户集合

     3)编辑消息,设置消息tag并建立与用户tag的关联。 

    4)推送程序执行,根据消息ID得到消息tag进而得到用户tag,按照用户tag进行推送

    二、消息查询功能

    1、点对点消息: 使用userId查询【点对点消息表】查询出该用户收到的点对点消息

    2、广播消息:使用userId查询【广播消息表】,查询出该用户注册时间之后发送的广播消息

    3、组播消息:根据userId得到该用户的tag,查询消息tag与用户tag关联表,得到消息tag。进而得到消息。

    三、几点说明

    1、对于点对点与广播消息,我们认为一般属于个人交易记录、办件明细、以及重要通知等性质的消息,实际推送与消息中心的展示应具有强一致性。

    而对于组播消息,一般认为是带有营销性质的、或其他的平台对用户的行为进行引导与推介的消息,在不使得用户产生明显困惑的情况下,应允许实际推送与"消息中心"具体位置应与广播和点对点区分)具有一定的偏差。

    2、关于送达率与打开率:参考https://www.oschina.net/question/861681_224273

    送达率可以由实际的推送服务商提供的接口获得。打开率可借由app用户行为分析平台对消息页面的访问与否记录进行分析

    3、组播推送消息:推送服务商有可能提供了设备(或alias)的tag信息服务,用于使用方对设备或alias进行自定义分群,如此,使用者只需要对拟发送的消息按照消息tag分类,并建立维护消息tag与上述设备或alias tag的关联表即可。

    四、主要数据结构

    • 点对点消息表(mysql)

    msgID, userID,  send_time, msg_content (partition by send_time)

    • 广播消息表(mysql)

     msgId,  send_time, msg_content

    • 组播消息表(mysql) 

    msgID,  send_time, msg_content

    • tag

    tagID,  tagName, tagType(msgTag/userTag)

    • 组播消息tag(hbase/es)

    msgID,  msgTagID1|msgTagID2|...|msgTagIDn

    • 用户tag(hbase/es)

    userID,  userTagID1|userTagID2|...|userTagIDn

    • 组播消息tag与用户tag关联表(hbase/es)

     msgTagID,  userTagID1|userTagID2|...|userTagIDn

    参考:https://www.cnblogs.com/jpush88/p/5337261.html

         mysql、hbase、es的特点和区别: https://www.cnblogs.com/029zz010buct/p/10366775.html

        HBase - ES -Redis 的设计模式有很多共同点  :  https://www.cnblogs.com/ruili07/p/10964361.html

        用户画像在携程的实践 :  https://blog.csdn.net/chenjunji123456/article/details/54966633

  • 相关阅读:
    redis-3.2.5 make 报错
    haproxy 实现多域名证书https
    centos7修改主机名
    ngx_image_thumb模块生成缩略图
    查看nginx在安装时开启了哪些模块
    C# install-package:"xx"已拥有为“xxx”定义的依赖项
    JetBrains 2017/2018全系列产品激活工具
    查看win10版本方法,及win10升级方法
    Windows 10正式版的历史版本
    open '/dev/hwlog_switch' fail -1, 13. Permission denied
  • 原文地址:https://www.cnblogs.com/lyhero11/p/12547918.html
Copyright © 2011-2022 走看看