Meizu Push 接入文档概述 一 概述 魅族推送 (Push) 是魅族公司向开发者提供的消息推送服务, 通过在云端与客户端之间建立一 条稳定, 可靠的长连接, 为开发者提供向客户端应用实时推送消息的服务, 通过推送消息, 魅族推送服务能有效地帮助开发者拉动用户活跃度, 改善产品体验 二 产品作用 2.1 促进用户活跃, 增强用户粘性 通过云和端之间建立长连接, 开发者可以实时地将消息推送到用户设备端 只要用户设备网 络通畅, 就能随时唤醒用户, 保持与用户的沟通, 大大提升用户活跃度和留存率 2.2 稳定高效的推送 依托强大的魅族推送服务集群, 以及魅族多年在手机即时通讯领域的积累, 魅族在消息推送 服务这一领域有着丰富的经验和雄厚的实力, 每秒数十万次的推送速率保障消息稳定高效的 触达用户端 2.3 灵活实现业务逻辑 魅族推送提供通知栏 透传两大通知类型的消息推送, 并提供基于魅族大数据画像的用户群推送和基于用户特征的千人千面个性化推送, 满足客户精准化推送和个性化推送的需求, 同时还提供标签 别名等定制化推送模式, 后台提供实时的数据报表, 让客户实现推送的可视化运营, 助推应用开发者 2.4 魅族推送上的独特优势 魅族推送在 Flyme 系统上的长连接由系统维护, 能够充分保障消息在 Flyme 系统上的到达率
在设备联网情况下, 到达率可达到 99.9% 三 基本架构 四 组件说明 Push Service:Flyme OS 上的一个常驻系统服务, 在网络可达的情况下时刻保持与推送服务器的长连接 Push SDK: 用于接收 Push Service 透传过来的消息并回调给应用, 它包括 Android SDK( 已对外提供 ) 以及 ios SDK( 待开发 ) Push Connector: 推送平台长连接接入服务器, 保持与客户端的长连接及将消息下发给客户端 Server SDK: 推送平台对外开放的消息推送 SDK, 封装了推送平台的 API 接口
Push 推送后台 : 用于生成平台推送消息 传递给 Push Connector, 然后 Push Connector 将消息下发给客户端, 主要功能包括 : 消息任务创建 数据统计 应用管理等操作的管理后台 App 运营 : 通过 App Server 或 Push 推送后台下发推送消息 APP Server: 第三方业务服务器, 通过集成 Server SDK 来实现消息推送的服务平台 App: 第三方应用, 用于接收 App 运营下发的推送消息 Meizu Push API: 提供 server SDK 中所有请求的 http 接口, 也可以简称为 Server API 五 名称解释 appid: 应用的唯一标识, 与 pushid 的区别在于是否标识设备 appkey: 客户端身份标识, 客户端 SDK 初始化使用 appsecret: 服务端身份标识, 服务端 SDK 初始化使用 PushId: 唯一标识一台设备上的某一个应用, 是后续推送流程的前提 通知栏消息 : 通知栏通知类型, 由 SDK 展示及统计展示数 点击数 透传消息 : 此消息 SDK 不解析, 直接透传给应用处理,SDK 不负责后续的统计 目标数 : 计划推送的目标个数 有效数 : 剔除目标数中无效的目标设备后所剩余的个数 推送数 :push 推送后台实际下发的目标个数 接收数 : 手机端实际接收到消息的设备数 展示数 : 通知栏消息被展示的设备数 点击数 : 通知栏消息被点击的设备数 标签 : 标签是客户端进行群体分类的标识, 标签表现为, 客户端为自身增加归类群体, 例如, 客户端设置自身为 体育 和 科技 两类标签, 业务进行推送时, 仅给具有此两类标签的用户进行推送 标签的限额目前为 100 个 别名 : 别名为接入应用的标识, 表现为账号名称或昵称等信息 每一个应用用户仅能设置一个别名, 当多个用户设置同一个别名的时候, 对此别名进行推送, 则会同时向多个用户推送消息 应用可为每个设备 ID( 即 PushId) 设定一个别名 (Alias), 方便开发者与自有的 ID 系统进行关联, 避免因需要保存设备 PushId 与自有账号的对应关系而给开发者带来额外的开发和存储成本 别名不能超过 20 个字符
六 平台约束 1. 单个业务在平台或 API 进行推送有速率限制, 默认应用是 500 条 / 秒, 如果超过此速率 可以联系我们进行调整 ; 2. 单个业务每天在平台或 API 进行任务推送有次数限制, 默认是 1000 条 / 天 ; 3. 单个业务订阅标签的个数不超过 100 个 ( 可配置 ); 4. 单个设备单个业务 1 分钟内推送超过 5 条会被折叠 ( 只保存最新的消息, 可配置 ); 5. 单个设备 1 个月内不活跃, 将取消订阅 ; 6. 一个 IP 地址每小时请求 API 接口有次数限制 ( 可配置 ); 7. 单个业务每天累计请求 API 接口有次数限制 ( 可配置 ); 8. 单个业务每天推送的消息总量有限制 ( 可配置 ) 七 流程说明 如果已经是开发者身份, 请直接跳至注册推送应用来获取 appid appkey appsecret; 如非 Flyme 开发者, 则按照以下流程接入 7.1 注册 Flyme 账户 进入 Flyme 开放平台 若已有 Flyme 账号, 直接在开发者中心页面右上角点击 登录, 填 写注册资料即可申请注册为企业开发者或个人开发者 若无 Flyme 账号, 点击右上角 注册 即跳转到 Flyme 注册页面
7.2 填写开发者资料 1. 选择开发者类型 个人开发者 : 如果您仅代表个人, 请选择个人开发者 企业开发者 : 如果您代表某个企业 有限责任公司 (LLC) 合作伙伴或向当地政府合法 注册的公司, 请选择企业开发者 注意 : 请谨慎选择开发者类型! 选择企业开发者后不可以更改为个人开发者 个人开发者可变更为企业开发者 2. 填写相关信息 注意事项 : 1. 注册企业开发者时, 公司名称 需与营业执照上的公司名称一致, 注册后不可更改 2. 资料提交后, 将会在三个 工作日 内审核完毕 3. 若申请不通过, 在登录开发者中心时系统将提示申请不通过的原因, 请按提示修改后重 新提交申请 4. 一旦注册成功, 基本信息皆不可修改! 提交前, 请认真确认 5. 如多次申请不通过, 请发送邮件至 open_flyme@meizu.com 咨询 7.3 注册推送应用 1. 开发者身份认证通过后, 请登录推送平台, 进入首页请点击右上角 新建应用
2. 进入应用创建页面, 输入应用名称 应用包名 应用图标, 点击 创建 即可 3. 完成创建后点击 打开应用 进入 配置管理 中的 应用配置 查看应用信息
其中 App Secret 是可以重置操作 ( 之前旧 App Secret 的服务端身份识别会失效, 以重置后的 为准 ) 7.4 Android SDK 接入流程 7.4.1 pushid 获取 PushId 是 Flyme 推送为每个设备上的每个 app 注册推送服务时生成的唯一标识 当开发者需 要给一个或者多个具体的设备推送消息时, 可以使用基于 PushId 的推送, 将个性化消息推 送给指定的设备 这种方式适合为每个用户订制个性化推送场景 注 : 1. PushId 是在客户端注册 Flyme 推送时, 推送平台根据设备标识 appid 生成, 保证每个设备上的每个 app 对应的 PushId 都是不同的 2. 当 app 注册成功后, 客户端 SDK 保存 pushid 的时间默认为 1 天, 之后的 app 调用注册都不会向服务端发送请求 因此只要应用不卸载重装或者清除应用本地数据,PushId 就不会清除 反之, 则从服务端重新获取 PushId 3. PushId 在同一个设备上的同一个应用中是始终保持不变的, 不会因系统 应用升级卸载而改变 ; 4. PushId 在如下几种情况下会失效 :
app 调用了 unregister 操作 ; 在 flyme 系统中,app 卸载时, 如果上报成功, 则 PushId 会失效 ; 设备连续 1 个月没有订阅操作 ; 对应 PushId 消息开关关闭 Android SDK 订阅 PushId 时序图如下 : 7.4.2 标签订阅 标签是针对应用设置的,PushId 可以订阅多个标签, 一个标签可以有多个 PushId 使用场景类似 app 做推送, 根据不同的标签用户推送不同的内容 对订阅了娱乐标签的用户推送娱乐新闻, 对订阅了美食标签的用户推送美食信息 注 : 1. 同个 PushId 可以订阅多个标签, 同个标签可以包含多个 PushId; 2. 同个 app 的标签数不能超过 100 个 ; 3. 此类型任务推送有次数限制, 默认 1000 次 / 天 ; 4. 标签下 PushId 在如下几种情况下会失效 : app 调用了 unregister 操作 ; 标签对应的 PushId 已失效 Android SDK 订阅标签时序图如下 :
7.4.3 别名绑定 PushId 是一个设备上的一个应用在推送服务中的唯一标识 考虑到在实际场景中, 对大部分开发者来说是以应用自有的用户唯一标识为对象来推送, 因此提供了设置别名推送的功能 : 应用可以将用户在应用内的账号或者其他用户唯一标识设定为用户设备 PushId 的别名, 在推送中可以直接基于别名进行推送 避免因需要保存设备 PushId 与自有账号的对应关系而给开发者带来额外的开发和存储成本 别名不能超过 20 个字符 注 : 1. 同个 PushId 只有一个别名,PushId 对应的别名以最后一次订阅的为准 ; 2. 同个别名可以绑定多个 PushId, 建议不要超过 10 个, 如果过多, 请采用标签方式 ; 3. 别名在如下几种情况下会失效 : app 调用了 unregister 操作 ; 别名对应的 PushId 已经失效 ; Android SDK 订阅别名时序图如下 :
7.4.4 切换推送消息开关 ( 开启 / 关闭通知栏 / 透传消息 ) 推送开关分为两种, 通知栏消息和透传消息开关 订阅 PushId 时, 两个开关默认都是打开状态 此开关为用户操作使用,app 可自由选择是否开启此功能 用户如果关闭通知栏消息开关, 则对应的通知栏消息不会推送, 同理, 关闭透传消息开关, 则透传消息不会推送 注 : 1. PushId 初始订阅, 通知栏和透传消息开关都是打开状态 ; 2. 通知栏和透传消息开关互不影响 ; 3. 关闭开关不会取消 PushId 订阅, 只是对应的消息无法推送 ; Android SDK 切换消息开关时序图如下 :
7.5 Server SDK 接入流程 Server SDK 推送分为非任务推送和任务推送两大类 : 1. 非任务推送 : 非任务推送包含 PushId 推送 别名推送两类 ; 此类型是将个性化消息推送给指定的设备, 此方式适合为每个用户订制个性化推送场景 2. 任务推送 : 任务推送包含 PushId 推送 别名推送 标签推送 应用全部推送四类 ; 此类型是先获取推送的 taskid, 将推送消息与 taskid 绑定, 然后通过 taskid 来推送 此方式适合对大批量用户推送相同的消息内容的场景 7.5.1 PushId 推送 PushId 是 Flyme 推送为每个设备上的每个 app 注册推送服务时生成的唯一标识 当开发者需 要给一个或者多个具体的设备推送消息时, 可以使用基于 PushId 的推送, 将个性化消息推 送给指定的设备 这种方式适合为每个用户订制个性化推送场景 注 : 5. PushId 是在客户端注册 Flyme 推送时, 推送平台根据设备标识 appid 生成, 保证每个设备上的每个 app 对应的 PushId 都是不同的 6. 当 app 注册成功后, 客户端 SDK 保存 pushid 的时间默认为 1 天, 之后的 app 调用注册都不会向服务端发送请求 因此只要应用不卸载重装或者清除应用本地数据,PushId 就不会清除 反之, 则从服务端重新获取 PushId 7. PushId 在同一个设备上的同一个应用中是始终保持不变的, 不会因系统 应用升级卸载而改变 ; 8. PushId 在如下几种情况下会失效 : app 调用了 unregister 操作 ; 在 flyme 系统中,app 卸载时, 如果上报成功, 则 PushId 会失效 ; 设备连续 1 个月没有订阅操作 ;
对应 PushId 消息开关关闭 Server Sdk PushId 推送时序图如下 Server SDK 推送平台 pushbypushid appid,appsecret,pushids,msg Http post appid,pushids,sign,msg Http response pushresult pushbypushid Result 7.5.2 标签推送 标签是针对应用设置的,PushId 可以订阅多个标签, 一个标签可以有多个 PushId 使用场景类似 app 做推送, 根据不同的标签用户推送不同的内容 对订阅了娱乐标签的用户推送娱乐新闻, 对订阅了美食标签的用户推送美食信息 注 : 1. 同个 PushId 可以订阅多个标签, 同个标签可以包含多个 PushId; 2. 同个 app 的标签数不能超过 100 个 ; 3. 此类型任务推送有次数限制, 默认 1000 次 / 天 ; 4. 标签下 PushId 在如下几种情况下会失效 : app 调用了 unregister 操作 ; 标签对应的 PushId 已失效
Server Sdk 标签推送时序图如下 Server SDK 推送平台 pushtotag appid,appsecret,pushtags,msg Http post appid,pushtags,sign,msg Http response pushresult pushtotag Result 7.5.3 别名推送 PushId 是一个设备上的一个应用在推送服务中的唯一标识 考虑到在实际场景中, 对大部分开发者来说是以应用自有的用户唯一标识为对象来推送, 因此提供了设置别名推送的功能 : 应用可以将用户在应用内的账号或者其他用户唯一标识设定为用户设备 PushId 的别名, 在推送中可以直接基于别名进行推送 避免因需要保存设备 PushId 与自有账号的对应关系而给开发者带来额外的开发和存储成本 别名不能超过 20 个字符 注 : 4. 同个 PushId 只有一个别名,PushId 对应的别名以最后一次订阅的为准 ; 5. 同个别名可以绑定多个 PushId, 建议不要超过 10 个, 如果过多, 请采用标签方式 ; 6. 别名在如下几种情况下会失效 : app 调用了 unregister 操作 ; 别名对应的 PushId 已经失效 ; Server Sdk 别名推送时序图如下
Server SDK 推送平台 pushbyalias appid,appsecret,alias,msg Http post appid,alias,sign,msg Http response pushresult pushbyalias Result 7.5.4 应用全部推送 应用全部推送是指对订阅了 app 的所有 PushId 推送消息 是一种全量消息推送 适用场景 app 搞一个全网活动, 需要对所有安装此应用的用户推送消息. 注 : 1. 此类型任务推送有次数限制, 默认 1000 次 / 天 ; Server Sdk 应用全部推送时序图如下 Server SDK 推送平台 pushtoapp appid,appsecret,msg Http post appid,sign,msg Http response pushresult pushtoapp Result
八 集成 8.1 Android SDK 集成 压缩包说明提供 aar 集成与 jar 两种集成方式, 分别对应 android studio 与 eclipse 两种开发工具的开发者 详细说明与下载地址, 请参考 : Android SDK 地址 8.2 Server SDK 集成 (Java 版 ) 详细说明与下载地址, 请参考 : Java SDK 下载地址 8.3 Server SDK 集成 (PHP 版 ) 详细说明与下载地址, 请参考 : PHP SDK 下载地址 8.4 Server API 集成文档 详细说明, 请参考 : HTTP API 地址 九 常见问题 常见问题请查看