自托管 Umami 实现 iOS 应用分析:免重量级 SDK,数据统计更精准!

发布时间:2026/7/19 19:12:22
自托管 Umami 实现 iOS 应用分析:免重量级 SDK,数据统计更精准! 鲁纳·奥维森·耶尔巴克相关信息涉及领导力、产品与技术包含项目、文章、演讲、关于等方面。使用自托管的 Umami 进行 iOS 应用分析2026 年 7 月 14 日发布阅读时长 7 分钟标签有分析、iOS、应用、开源、Fly、Cloudflare。因已自托管 Umami希望在应用中有同样体验且无需重量级分析 SDK、请求 IDFA 权限、借助第三方收集数据所以创建了开源 Swift 包 umami - swift可在同一仪表盘看到与网站相同的访客和访问数据。我的 Umami 实例支持应用分析情况每个应用在 Umami 中注册为网站显示在网站列表中与真实网站并列还展示应用真实图标。应用概览页面与网站类似访客数、访问数和页面浏览量统计方式相同。应用各个屏幕将自身报告为页面如健身追踪应用 Simplest Workout Tracker 的日历、年度总结、设置页面和记录健身页面会显示在页面列表中能知道用户使用应用的部分。实现方式umami - swift 是无依赖的开源 Swift 包公共 API 简洁。configure 方法需传入网站 ID 和主机字符串主机是在 Umami 中添加网站时输入的域名应用使用伪域名baseURL 可指向自己的 Umami 实例配置时会将启动页面浏览和 app_started 事件加入队列应用启动信息会显示在 Umami 概览页面。track 方法用于发送带有可选额外数据字典的命名事件screen 方法用于发送指定屏幕的页面浏览信息两个方法都会先将数据存入磁盘再批量发送无网络启动应用也不会丢失数据且不影响 UI。将其集成到应用中将 umami - swift 集成到应用只需几个步骤一是在 Xcode 中选择“文件”→“添加包依赖项”粘贴链接设置规则添加产品到应用目标使用 Package.swift 的项目在 dependencies 中添加相关内容并添加产品到目标。二是在 Umami 仪表盘为应用添加新网站给应用一个稳定伪域名复制生成的网站 ID。三是在应用启动时调用一次 Umami.configure 方法传入网站 ID、域名和 Umami 实例。四是运行应用在 Umami 仪表盘中打开应用网站页面app_started 事件应在几秒钟内出现表明事件数据正常传输。同一后端的不同客户端Umami 的跟踪脚本与 /api/send 和 /api/batch 两个端点交互接受 JSON 格式请求体不需要 API 密钥或签名请求通过有效负载中的 website - id 识别网站。Swift 应用可直接调用这些端点发送相同格式 JSON 数据设置合适的 User - Agent蜜罐机制同样适用于应用。准确统计唯一用户Umami 以访客和访问统计流量网页端通过对 IP 地址和 User - Agent 进行无 cookie 哈希计算确定访客身份应用中 umami - swift 自行提供访客 ID每个事件携带 UUIDUmami 作为访客标识符接受。该 UUID 随机生成仅存在于内存日历日期变更时更新不写入设备数据每次应用启动视为新访客以一天为上限与 Umami 无 cookie 网页跟踪方式一致不涉及 IDFA 或应用跟踪透明度无法跨应用、安装或日期跟踪用户。页面浏览量让概览页面数据准确Umami 通过页面浏览量计算访客数、访问数和页面浏览次数带有 name 的有效负载是自定义事件仅发送命名事件时概览页面数据显示为零事件只显示在“事件”列表中。客户端在每次应用启动和返回前台时发送一个 / 页面的浏览量让概览页面显示真实数据应用屏幕也可参与统计Umami.screen 方法会发送页面浏览量屏幕会显示在 Umami 页面列表中。不受广告拦截器影响浏览器请求会经过广告拦截器或隐私扩展拦截器可看到完整 URL/np/ 路径可避开问题。应用更难被拦截iOS 上 Safari 内容拦截器仅适用于 Safari 浏览器系统级拦截器或 DNS 拦截器只能看到 DNS 查找和 TLS 握手时的域名路径信息加密浏览器中能拦截 Umami 的规则在应用中无法匹配普通自托管实例默认不会被拦截。umami - swift 直接与 Fly 源服务器通信不经过 Cloudflare Worker但 /np/ 代理仍有作用。在 Umami 中显示应用图标Umami 在仪表盘上每个网站旁显示小图标从 DuckDuckGo 的 favicon 服务根据注册域名获取应用使用伪域名注册显示灰色地球图标。自托管可改变这种情况Umami 读取 FAVICON_URL 环境变量可替换 favicon 服务设置指向 Cloudflare Worker。请求 /icons/ 时Worker 会比对域名与应用列表匹配则返回应用真实图标其他情况重定向到 DuckDuckGo 的 favicon 服务网站仍显示原有图标。这是美观上的改进现在应用显示真实图标。相关文章推荐包括为 Scratch a Saying 添加一些小亮点2026 年 7 月 17 日阅读时长 2 分钟、使用 Cloudflare、Fly 和 Supabase 自托管 Umami2026 年 7 月 11 日阅读时长 8 分钟、SinceTag 现已上架 Mac App Store2026 年 6 月 13 日阅读时长 1 分钟。还有上一篇、主页、下一篇等导航信息以及项目、文章、演讲、关于、隐私政策、联系我们、Github、领英、订阅源等相关内容。