本项目初始化策略面向开发环境。新增表会自动创建;如果修改已有表字段,应按项目规则删除开发数据库中的表并由初始化流程重建,不使用 ALTER TABLE 在线迁移。
Rust 服务端
cd MyChatServer
export MYCHAT_CONFIG_MASTER_KEY='请替换为至少32字符的高强度随机密钥'
cargo run
主要接口:
GET /api/im/platform-config/groups
GET /api/im/platform-config
PUT /api/im/platform-config
POST /api/im/platform-config/reset
GET /api/im/platform-config/history
POST /api/im/platform-config/assets
POST /api/im/platform-config/test-push
GET /api/im/mobile/bootstrap-config
GET /api/im/platform-assets/{id}
bootstrap-config 只返回 is_client_visible=true 的固定白名单字段。品牌图片下载接口也只允许访问当前配置实际引用的图片,不能借文件 ID 下载其他聊天图片。
MyChat 企业 Android 保活与推送配置中心
本仓库已经实现一套同时覆盖完全隔离私网和公网混合环境的 Android 消息保活方案:
目录
功能说明
配置分组
后台菜单“即时通讯平台 → 平台配置”包含:
APP_BRANDINGPUSHINTRANET_ONLY、ALIYUN_ONLY、HYBRID三种模式CONNECTIONOPERATIONS消息投递流程
Android 登录成功后会将
user_uid绑定为阿里云ACCOUNT。云通知只负责唤醒和提醒,完整消息仍由自建通道/离线消息接口同步。数据库与密钥
新增表:
im_platform_config:平台配置定义和值。im_platform_config_history:配置变更审计历史。默认配置由
MyChatServer/json/im_platform_configs.json初始化。阿里云 AccessKey 可以保存在数据库,但
config_value中保存的是 AES-256-GCM 密文。Rust 服务启动前必须设置独立主密钥:要求:
本项目初始化策略面向开发环境。新增表会自动创建;如果修改已有表字段,应按项目规则删除开发数据库中的表并由初始化流程重建,不使用
ALTER TABLE在线迁移。Rust 服务端
主要接口:
bootstrap-config只返回is_client_visible=true的固定白名单字段。品牌图片下载接口也只允许访问当前配置实际引用的图片,不能借文件 ID 下载其他聊天图片。Vue 管理后台
生产构建:
图片上传限制为 10 MB,服务端会重新检查 MIME 和真实图片内容。敏感配置输入框遵循以下语义:
Android 构建
Android Gradle Plugin 8.3 需要 JDK 17。示例:
完全私网 APK
默认构建不包含阿里云 SDK:
后台将
PUSH_MODE设置为INTRANET_ONLY。APP 使用:START_STICKY服务恢复阿里云混合 APK
阿里云 SDK 是构建时能力。启用时传入 Android 应用的 AppKey 和 AppSecret:
请勿把真实 AppSecret 写入
gradle.properties并提交仓库。应由企业 CI/CD Secret 注入,并对发布 APK 执行混淆、加固和签名保护。后台再配置以下服务端参数:
ALIYUN_ACCESS_KEY_IDALIYUN_ACCESS_KEY_SECRETALIYUN_PUSH_APP_KEYALIYUN_REGION_IDPUSH_MODE=HYBRIDAndroid SDK 的 AppKey/AppSecret 与 Rust 调用 OpenAPI 的 RAM AccessKey 是两套凭据,不能互相替代。RAM 用户应只授予移动推送所需的最小权限。
本实现采用阿里云移动推送 Android SDK 4.0.0,主 SDK 不等于各手机厂商辅助通道。当前没有接入华为、小米、OPPO、vivo 等独立厂商扩展包,因此不需要逐家申请账号;如以后需要更强的厂商离线送达率,可按需增加单个扩展包。
阿里云官方参考:
Android 启动配置行为
启动时不会等待网络:
即使服务器不可达、设备熄屏或处于完全隔离网络,启动页都不会因等待远程图片而白屏。
已执行验证
两种 Android Debug 构建均已成功。阿里云真实推送仍需要有效的 EMAS 应用、RAM AccessKey、设备安装包和网络出口才能进行端到端验收。