Odin MaxCode 替代多钥匙:PushMeld 如何将通知添加到之前没有的地方
MaxCode 将 push 和 email 通知的管理从网站、服务器、脚本和设备中迁移到 PushMeld 中。
设想一台家庭电脑,每晚都会备份重要文件。结果会被记录在系统日志中:操作成功完成或发生了错误。
技术上这一切都在正常运行。不便之处在于早晨:用户必须自己打开日志并检查结果。程序没有手机应用,也没有开发者提供的通知推送,单纯为了一个功能而建立完整基础设施几乎没有人会这样做。
通过 PushMeld,可以向此流程中添加简单的请求。备份完成后,手机会收到一条消息:备份已创建或操作发生错误。如有需要,也可通过 email 接收相同通知。
这个想法的基础是 MaxCode — 一段安全的统一代码,PushMeld 通过它获取所有必要信息,继而进行通知的后续传递。
当我了解这个项目时,MaxCode 给我留下了最深的印象。Push 通知和 email 已成为常规技术。更重要的是,源程序不再直接管理它们的传送。它只需通知 PushMeld 事件,所有后续处理都由 PushMeld 在其之外完成。
首先说明,PushMeld 属于 MELD® 系统,DigiMeld UG 是其开发公司。
源端只关心事件本身
普通的通知集成很快会变得繁琐。需要定义项目、配置访问权限、存储密钥、管理设备令牌、连接邮件服务器,还要迎合不同移动平台的要求。
PushMeld 将上述所有内容从源系统迁移到一个独立的控制环节中。
备份程序只知道一件事:操作成功完成或失败。它只传递 MaxCode、标题和正文内容。
它无需了解:
- 连接到项目的设备数量;
- 哪个手机当前是激活状态;
- 推送应通过哪个运营商传送;
- 是否启用了 Email 传送;
- 用户是否获得了新手机;
- 旧平板是否已断开;
- 谁应接收特定通知。
所有这些,都由 PushMeld 内部管理。
我认为,这正是该项目的核心架构思想:MaxCode 将通知管理从事件发生的程序中转移到负责投递的系统中。
用一个 MaxCode 代替多钥匙
通常连接外部服务时,需要同时处理多个实体。项目识别码、访问密钥、秘密、设备令牌以及具体提供商的配置都可能需要单独管理。
MaxCode 将所有必要信息封装在一个受保护的代码中。
每个项目都会生成一个对应的 MaxCode。它整合了项目的识别信息、发送权限以及用于 PushMeld 采用合理投递配置的数据。
发出系统无需单独存储:
- 项目识别码;
- API 密钥和额外秘密;
- 已连接设备的令牌;
- 每个接收者的参数;
- 不同推送提供商的密钥;
- push 和 email 的单独设置。
只需在程序、网站或脚本中加入一个 MaxCode。获得 MaxCode 和消息内容后,PushMeld 会自动识别项目,验证请求,找到连接的设备,并选择可用的渠道。
因此,MaxCode 不应被视为额外的密钥,而是用来将所有散乱的密钥、令牌与识别符,用一个代码替代。
从无通知源中触发通知
MaxCode 可以在任何能发出 HTTP 请求的系统中使用,无论是通过自身实现还是借助简单脚本。
例如,PushMeld 可以在以下情况下发出通知:
- 家庭服务器停止响应;
- 备份完成或发生错误;
- 自定义脚本完成一次长流程;
- 3D打印机打印结束;
- 传感器检测到泄漏;
- 门锁打开或警报触发;
- 网站显示新信息;
- 商品价格变动;
- 存储空间被释放;
- 旧程序处理大文件结束;
- 小型网店收到新订单。
这些源设备可能没有自己的应用程序。有些设备只能访问指定地址,另一些可以运行用户自定义命令,更有的可以加入简单的自动化脚本。
这些都足够将事件传递给 PushMeld。
源系统不会变成独立的通知服务提供者。它仅记录事件并发送带 MaxCode 的消息。其他的——接收者、设备、渠道和技术路径,全部由 PushMeld 管理。
不仅支持 push,也支持 email
PushMeld 一名主要联系到手机通知,但功能远不止如此。
可以选择使用 push、email,或两者结合——视项目设置和实际可用性而定。
比如,成功完成备份的通知可以只在手机显示。而发生重大错误时,可以同时通过 email 发送详细报告。
源程序在这两种情况下都只会发出一个 MaxCode 请求。无需另外设置邮件服务器、配置参数或开发第二个独立脚本。
传输渠道的决策由 PushMeld 内部完成。如果用户之后在已有项目中添加 email,经由源程序发出的请求无需更改。
这里,email 的用途不在于大量发放,而是作为补充方式传达连接项目的事件信息。
一个项目对应一个事件源
项目可以根据内容不同,将通知进行分类管理。
普通用户可以分别建立:
HomeServer— 家庭服务器状态;Backups— 备份结果;SmartHome— 家庭自动化与传感器;PriceMonitor— 价格变动;Website— 网站新请求信息。
每个项目都对应自己的 MaxCode。这样,家庭自动化不会和价格监控混淆,备份信息不会交叉显示。
在应用中一目了然消息的来源及其关联任务。
特别是在源越来越多时,标签式分类能带来更好的理解。用户可以获得多个独立渠道,为每个渠道设定自身的投递策略。
新手机无需改动程序
普通的 push 令牌绑定具体安装在特定设备上的某一应用。
如果用户有两部手机和一台平板,实际上会对应多个令牌。重装或换设备后,单个令牌可能改变甚至失效。
MaxCode 层级更高——关联于项目,非单一设备。
用户自行决定哪些设备关联到项目,并应该接收通知。例如,可以将家庭服务器通知同时推送到手机和平板,网站事件仅通知工作手机。
如果更换新手机或禁用旧设备,源脚本仍继续使用同一 MaxCode。最新的接收设置由 PushMeld 更新。
添加 email 或调整传输参数也遵循同样逻辑。
因此,MaxCode 不只是用来简化密钥管理,更是一道界限:事件和其流向之间的隔离线。这条线之后的内容可以随意变动,不影响源程序。
免费使用满足常规需求
基础设施产品习惯用企业系统、服务器命令和大量数据描述。这似乎让人觉得 PushMeld 更适合专业开发者或企业。
实际上,起步非常简单,适合解决家庭的小任务。
其核心应用免费。MaxCode 主要功能在免费额度内也无需付费。用户可以创建项目、连接设备、接收服务器、网站、脚本或自动化系统的通知信息。
这不是一段临时演示,不能用一段时间后就失效了。对于日常应用,免费额度一般已足够。
当请求变多、需要额外功能或系统规模扩大时,才需要付费计划。
对个人和企业采用同一原则
MaxCode 的工作机制无论任务大小都保持一致。
用户收到备份完成的通知,工坊得知 3D 打印结束,电商获悉新订单,技术团队收到服务器出错的警示。
不同的只是项目的数量和规模,但原则一样。
假设有一个拥有三个事件源的组织:
Orders— 新订单;Payments— 收款与退货;ServerStatus— 技术故障。
每个都配备自己的 MaxCode 和连接设备。订单信息发给负责人和管理者,财务事件发给财务负责人,技术故障通知技术维护人员。
无论哪个事件,系统都只会传递事件内容和对应项目的 MaxCode。
员工变动、设备变化或传送途径调整时,源系统无需改动。全部管理留在 PushMeld 内部。
APNs、FCM 和 HMS 仍由系统外管理
不同设备的 push 服务可能依赖 APNs、FCM 或 HMS。每个提供商的规则、令牌和技术细节都不同。
通常,开发者需要考虑这些差异来设计推送系统。而在 PushMeld 中,这些差异都不由源程序处理,而由 MaxCode 管理。
家庭服务器、网站或脚本不需要了解接收者手机的真实情况,也不知道通过哪个基础设施传输消息。它只发出请求,PushMeld 负责选择合适路径。
MaxCode 并非替代苹果、谷歌或华为的基础架构。它只是实现统一的入口,提前打通一切。
这样,源系统无需每次升级以适配设备变化。今天通过 FCM 发送,明天改用 APNs,后续还可以为项目添加新设备或 email。对事件的处理方式保持不变。
MaxCode 和普通 API 密钥的区别
普通的 API 密钥多只用于授权访问。验证后还需告知项目、接收者和投递方式。
MaxCode 将这些上下文信息封装在一个代码中。
它让 PushMeld 识别项目、验证请求并应用最新设置。外部源程序只需传递 MaxCode 和事件内容,不管理后续路径。
简言之,API 密钥主要用来授权,“MaxCode” 则同时定义了使用场景及权限。
通知作为可接入的功能模块
我认为,了解 PushMeld 后,不应仅称之为推送通知应用。
更准确地说,这是一个可以在没有通知的地方添加通知,并能独立管理它们的解决方案。
源头可以是家庭服务器、传感器、旧应用、网店、自定义脚本或企业平台。只要能发出 HTTP 请求,事件就可以传递给 PushMeld。
之后,MaxCode 在事件和投递之间划出一条界线。一边是通知源,告知“发生了什么”。另一边是 PushMeld,根据配置确定项目、设备、渠道和路径。
因此,MaxCode 不是简单的多密钥替代品。而是一道界线,将通知的控制权从源程序中抽离出去。
可以更换电话、增加 email、禁用旧设备,或修改投递路径——程序仍只需确保“传达事件”。