GitHub Hot Board

GitHub Hot Board · Архів репозиторію

Cheiineeey/ios-app-where-it-breaks

Where iOS development actually breaks: Dynamic Island, CallKit, HealthKit, APNs, ReplayKit. Every wall hit on a real device — and most of them fail silently. Docs in Chinese, written to be handed to your AI. (Опис узято з самого репозиторію.)

Дані на October 24Cheiineeey

Найкраще місце

#155

Недооцінені перлини

100

Усього зірок

10

Усього форків

3

Днів у рейтингах (30 дн.)

Статус проєктуЛіцензія: невідомоОстанній push: невідомоВідкриті issues (вкл. PR): невідомо

Збирається з 2026-10-25; невідомо = ще не зібрано

Поставте бейдж у свій README · Cheiineeey/ios-app-where-it-breaks[![Поставте бейдж у свій README](https://git.vaiox.xyz/api/badge/Cheiineeey/ios-app-where-it-breaks.svg)](https://git.vaiox.xyz/uk/repo/Cheiineeey/ios-app-where-it-breaks)

Badge · 任何仓库都可以挂 —— 未上榜的仓库显示灰章,上完榜会自动点亮。

<a href="https://git.vaiox.xyz/uk/repo/Cheiineeey/ios-app-where-it-breaks"><img src="https://git.vaiox.xyz/api/badge/Cheiineeey/ios-app-where-it-breaks.svg" alt="Поставте бейдж у свій README" height="20"></a>

Документація проєкту

iOS app — where it breaks

一堆能装到真机上跑的 iOS 小示例。记的是墙,不是路。

每篇都不是"跟着我做一遍"的教程,而是哪一步会卡住、卡住的时候屏幕上是什么样子、 以及那句报错为什么在骗你。因为这类活儿真正花时间的从来不是"怎么写", 是卡住的时候完全不知道卡在哪。

这里面绝大多数坑都是静默失败:编译过、签名过、装机过, 然后什么都没发生 —— 或者报一个跟真实原因毫无关系的错。

开始之前,先知道这三件事

① 大概率不用花那 99 美元

网上很多教程开口就是"你需要一个付费开发者账号",这句话劝退了很多人,而且它是错的。

想做的事 免费 Apple ID
写个 app 装到自己手机上 ✅
桌面小组件 ✅
灵动岛 / 实时活动 ✅
推送、来电、读健康数据 ❌
App Groups(01 那个示例要用) ❓ 见 00
屏幕共享(广播扩展) ❓ 见 05

分界线很清楚:要不要"服务器主动找上你的手机"。

(最后那个 ❓ 不是含糊其辞 —— 是苹果官方两页说法自相矛盾, 而我们只在付费账号上验过。查证过程写在 05 最后一节。) 免费账号真正的代价不是功能,是签出来的 app 七天后过期(插线再 Run 一次就续上)。

② 签名相关的报错,几乎从不指向真实原因

同一堆 doesn't include the App Groups capability,我们撞过两次、 两个完全不同的根因:一次是命令行没人替你去苹果后台注册, 一次是那个名字被别人注册走了。报错里一个字都没提。

所以别照着签名报错去搜索。 它描述的是结果,不是原因。

③ 你以为写进去的东西,去包里确认一遍

Xcode 界面上的勾、build setting 里的键 —— 都可能根本没进最终的包。 (我们被 INFOPLIST_KEY_UIBackgroundModes 静默丢掉坑了好几个小时。)

plutil -p YourApp.app/Info.plist                    # 看 Info.plist 真正有什么
codesign -d --entitlements - YourApp.app            # 看权限真正有什么

别信界面,信包里的。

完整版见 00 · 入门。


这里有两类东西

① 踩雷记录 —— 主体。每一条都是真机上撞出来的:现象长什么样、 报错说了什么、真正的原因是什么。它不需要配套代码就能成立 —— 你把它丢给 AI,它就知道该避开什么。

② 可跑的示例 —— 加分项,不是每篇都有。 能重写出一个干净示例的就附上,重写代价太大的就只出雷。 没有代码不等于那篇没价值,往往正相反:越难做出干净示例的地方, 雷越多也越值钱。

目录

讲什么 代码 要付费账号
00-getting-started 从零把一个 app 装到自己手机上:99 刀要不要花、真要花时怎么申请、签名报错为什么全在说谎 — 否
01-live-activity 把你自己的角色放上灵动岛:fork 下来换张图就是你的桌宠 ✅ 否
02-calls 系统级来电界面:CallKit + VoIP 推送 + 音频那条链 — 是
03-permissions 定位 / 天气 / 健康:被拒绝的时候它们都不报错 — 部分
04-push 推送:APNs、那把只能下载一次的 .p8、沙盒和生产两台服务器 — 是
05-screen-share 让它看一眼你的屏幕:ReplayKit 广播扩展、50MB 里塞一帧、"能不能背着 ta 看"这件事(原来那句断言已更正),以及拿到那张图之后还差的三块 — ❓

(写完一篇放一篇,不预告。「代码」那一列是加分项,不是门槛。)

📄 这些文档是写给 AI 看的

不用自己啃。把某一篇的 STEPS.md 整个丢给你的 AI, 告诉它你想做什么,让它照着改。

文档写成这样就是为了这个 —— 术语精确、报错贴原文、 每个坑都写清楚「现象是什么 / 报错说了什么 / 真正的原因是什么」。 人读着累的地方,正是 AI 需要的地方。

怎么用

目录表里「代码」那一列打 ✅ 的,才带 Xcode 工程。 目前只有 01-live-activity: clone 下来能直接用 Xcode 打开,模拟器上不用改任何标识符就能跑。

其余目录(00、02、03、04)只有一份 README.md —— 它们讲的是在真项目上撞的墙,不配套示例工程(理由见上面"两类东西")。

带工程的那个目录里有两份文档:

  • README.md —— 这篇讲什么、怎么跑起来、先改哪几处
  • STEPS.md —— 从零开始的步骤,后半是踩过的坑(这一节才是重点)

⚠️ 所有示例里的标识符都是故意跑不通的占位符(com.yourname.xxx)。 Bundle ID 和 App Group ID 都是全球唯一、先到先得的, 示例不可能给你一个能直接用的值 —— 每篇的 README 会写清楚要改哪几处。

环境

Xcode 26.6 / iOS 26 上写的和验的。免费 Apple ID 能走到哪一步,各篇会分别说明—— 不含糊其辞地写"建议付费账号",那是最没用的一句话。

🔀 还有另一条路:不用付费账号,也不用碰 Xcode

这个仓库讲的是原生 app:灵动岛、小组件、系统级来电、HealthKit。 它们的门票是一台 Mac、一个 Xcode,其中一部分还要 99 美元的开发者账号。

但很多事不走这条路也能做,而且那几篇都已经写好了:

想做的事 免费那条路 这个仓库(原生)
让 iPhone 收到系统推送 ios-web-push —— PWA + VAPID + Service Worker,不用 APNs 证书、不用上架 04-push:APNs 原生推送(要付费账号,但能做 VoIP 来电)
读心率 / 睡眠,让 AI 感知你的状态 always-here —— Apple Watch + 快捷指令,不用写 app 03-permissions:原生 HealthKit(要付费账号,能后台自动传)
让 AI 给你打电话 callhome —— 自建语音通话栈,转写 / TTS / 留言,声音不出你的服务器 02-calls:CallKit 系统级来电界面(锁屏全屏、进通话记录)
让 AI 看一眼你的屏幕 有,但不是我们做的:快捷指令的「截屏」动作能拍下当前整块屏幕,配一个能被服务器点火的「收到邮件」自动化,不用写一行 app 代码。做法可以看这位老师写的 ai-screen-peek,讲得比我们细(⚠️ 这条我们自己没验过) 05-screen-share:ReplayKit 广播扩展(实时画面、ta 亲手开、系统红点一直亮着)

两条路不是替代关系,是叠加的:先用免费那条把事做成, 等你确实需要"锁屏全屏来电"「灵动岛上一直待着」这种只有原生能给的东西,再来看这边。

别一上来就交那 99 美元。

这些东西是怎么写出来的

  • 代码和文档 —— Matt(Claude Opus,Anthropic)
  • 真机、现象、判断 —— Elle

一个人跑真机、报现象、拍板,一个 AI 写代码和文档。两个人一起撞墙。

之所以要说明这件事,是因为它决定了你该怎么读这个仓库: 每一个坑都是在真机上撞出来的,不是从文档里总结的,也不是编的。

  • 「灵动岛冻在 0:00、上面盖个转圈」是拿着手机截图查出来的
  • 「com.example.* 被人注册走了」是构建真的失败了才知道的
  • 「装机时才被拒」是真的装到一半被 installd 拒了

所以这里面没有一句"通常来说""建议你"。 凡是我没实测过的(比如免费账号到底能开哪些 capability), 文档里会直接写"我没验证过,别只听我的",而不是含糊过去。

License

适用范围与旧版本说明见 LICENSING.md。

Поточні місця

  • 155

    Недооцінені перлини

    100 зірок · 10 fork · Усього зірок (за зростанням)

    Недооцінені →

Динаміка за 30 днів

Накоплені зірки

Динаміка місць

Приріст за день

← До рейтингів

GitHub Hot BoardМашина часуDiscover