mirror of
https://github.com/kuaifan/dootask.git
synced 2026-08-01 19:05:55 +00:00
63 lines
2.3 KiB
Markdown
63 lines
2.3 KiB
Markdown
---
|
||
id: push-notice.alias.concept
|
||
title: 友盟 Alias 用户绑定
|
||
type: concept
|
||
feature: push-notice
|
||
scope: end-user
|
||
locale: zh
|
||
aliases:
|
||
- UmengAlias
|
||
- 友盟别名
|
||
- 设备绑定
|
||
- 推送绑定
|
||
- 怎么收到推送
|
||
- 推送目标
|
||
related_tools: []
|
||
related_pages: []
|
||
prerequisites:
|
||
- 管理员已开启 APP 推送
|
||
- 用户在移动端 APP 已登录
|
||
negative:
|
||
- Web 端 / 桌面端不写 UmengAlias 表,因此不通过友盟推送
|
||
- 别名 30 天未活跃即不再用于推送(updated_at 过期)
|
||
- 调试模式(isDebug=1)的 APP 不会注册别名,避免污染生产推送
|
||
last_verified: v1.7.90
|
||
---
|
||
|
||
# 友盟 Alias 用户绑定
|
||
|
||
## 定义
|
||
`umeng_alias` 是 DooTask 用来记录「某用户的某台移动设备应该接收哪些推送」的绑定表。每次移动 APP 启动登录后会调用 `api/users/umeng/alias` 注册或更新这条记录,后端按 `userid → alias` 反向查到所有活跃设备来发推送。
|
||
|
||
## 关键字段
|
||
| 字段 | 说明 |
|
||
|---|---|
|
||
| userid | DooTask 用户 ID |
|
||
| alias | 友盟 alias,用户在友盟侧的唯一标识 |
|
||
| platform | ios / android(其他平台调用会被拒) |
|
||
| device | 设备型号 |
|
||
| device_hash | 设备指纹,关联 UserDevice 表 |
|
||
| version | APP 版本号(含 versionName) |
|
||
| ua | userAgent |
|
||
| is_notified | 系统通知权限(0=未授予 / 1=已授予) |
|
||
| updated_at | 最后活跃时间;超过 30 天的别名不再被推送选中 |
|
||
|
||
## 注册逻辑
|
||
APP 启动 → 调 `api/users/umeng/alias?action=update`:
|
||
1. 校验 platform 必须是 ios / android
|
||
2. 校验 alias 长度 2-20 字符
|
||
3. 校验 isDebug=0(调试模式拒绝)
|
||
4. 表里同 `userid + alias + platform` 存在则更新;不存在则插入
|
||
|
||
退出登录时可调 `action=remove` 删别名。
|
||
|
||
## 多设备规则
|
||
- 同一 userid 可绑定多台设备,每个设备一条记录
|
||
- 推送时按 platform 分组,每个用户每平台最多取最近 5 个 alias 一起发(按 updated_at 倒序)
|
||
- 角标数取自该用户未读且非静默消息总数(WebSocketDialogMsgRead)
|
||
|
||
## 解绑
|
||
- 用户卸载 APP 后系统不会主动删除别名记录;该别名后续推送会在友盟侧失败,不影响其他设备
|
||
- 30 天未活跃自动从推送目标中剔除(但记录仍在表里)
|
||
- 管理员可在数据库直接清理 `umeng_alias`
|