📋 AI小徒弟 · Apple 上架時程
App Store Journey · 獨立開發者的真實上架日誌
AI小徒弟是一款「讓小孩教 AI」的 iOS/iPadOS app,由一個人從零開發。這裡記錄送審 Apple App Store 的每一個節點——期待、等待、結果——希望給同樣走在這條路上的獨立開發者一點參考。
核心迴圈(孵蛋 → 畫圖教學 → 考試 → 進化)開發完成、單元測試全綠後,AI小徒弟 v1.0.20260705(Build 2)正式上傳 Apple 送出 App Store 首次審核。同一天 Build 1(早上那顆)因缺 PrivacyInfo、舊家長閘等問題作廢,晚上重打包 Build 2:改用家族統一的乘法家長閘、補上程式合成音效與寵物語音、辨識引擎升到特徵 v3、`PrivacyInfo.xcprivacy` 補齊(零收集、零追蹤)。
- 版本:1.0.20260705 (Build 2)
- 上傳時間:2026 年 7 月 5 日 21:37(Build SDK 23F73)
- 類別:Education · Made for Kids(6–8 歲)· iPhone + iPad · iOS 17+
- 狀態:等待審核中
首發完全免費、無內購、無廣告;100% 離線、預設不收集任何資料。App Privacy 填 Data Not Collected,Age Rating 走 Made for Kids 6–8。



等了 4 天,Apple 在 7/9 晚上把 v1.0.20260704(Build 1)標記為 Rejected。這次不是功能被打槍,而是 Guideline 2.1 - Information Needed:兒童類 app 依 Guideline 1.3(Kids Category) 需先釐清資料處理方式,審查員在放行前要求以文字回覆四個隱私問題。
Apple 要求回覆的四個問題:
- App 是否內含第三方分析?若有,蒐集哪些資料?
- App 是否內含第三方廣告?若有,請提供該廣告網路針對兒童 app 的公開政策連結。
- 資料是否會分享給任何第三方?若有,用途與儲存地點為何?
- 是否為第三方分析/廣告以外的目的蒐集任何使用者或裝置資料?若有,請完整說明所有用途。
好消息是——AI小徒弟本來就是 100% 離線、零收集、零追蹤、無第三方 SDK、無廣告,`PrivacyInfo.xcprivacy` 也早已填「Data Not Collected」。四個問題的答案全是「否」,只要在 App Store Connect 據實回覆即可,不需改任何程式碼。
- 審查版本:1.0.20260704 (Build 1)
- 審查日期:2026 年 7 月 9 日 · 審查裝置:iPad Air 11" (M3)
- Submission ID:
cf452bca-0758-4326-8996-0d0254eb99d8 - 狀態:Rejected · 待回覆


在 App Store Connect 據實回覆四個隱私問題(答案全是「否」——零收集、零追蹤、無第三方 SDK)後,Apple 隔天就放行。7/11 凌晨收到 「Congratulations!」 通知信:審核完成、可正式發佈。從第 1 次退件到通過不到 2 天,一行程式碼都沒改,純靠據實說明。AI小徒弟正式上架 App Store!
- 版本:1.0.20260704 · Ready for Distribution
- 審核完成:2026 年 7 月 11 日 00:05
- 類別:Education · Made for Kids · iPhone + iPad
- 狀態:✅ 已上架


上架 57 天後的第一次改版。中間那版 1.1.20260808 寫好了但從未送審——build 停在 3、沒有 tag、checklist 全未勾——所以商店頁一直還是 1.0 的文案,這次的 Description 與 What's New 必須涵蓋「1.0 之後的全部」(Guideline 2.3:更新說明要對得上實際變更)。9/5 深夜 11:12 Xcode 上傳 build 4,11:16 建立 Draft Submission,iOS App 1.2.20260905 (4) 一項送出。版號日期從 0823 一路改到 0905:每次補功能都直接改日期不另開檔,「舊版本檔永不改寫」保護的是已送審的快照。
- 版本:1.2.20260905 (4) · iPhone + iPad · 送審項目 1
- 建立送審:2026/9/5 晚上 11:16(= 9/5 08:17 AM PDT)
- 狀態:⏳ 等待審核中
① 1.1 累積的:恐龍化、用說的教、跟著畫
小徒弟從史萊姆改成恐龍(龍寶寶 → 小恐龍 → 大恐龍 → 恐龍大師)。除了畫圖教,還能用說的教:裝置端語音辨識進 TinyLM,牠只會用孩子教過的詞回話——「腦=資料」的誠實演出。問恐龍博士走 Apple 裝置端 LLM,輸入規則在模型之前(自傷/求救 → 固定引導、內容不進模型)、輸出規則在模型之後(最多 3 句、關鍵詞再篩),並常駐「由裝置上的 AI 扮演、可能出錯、重要的事問大人」。跟著畫(鉛筆按大輪廓 → 大塊 → 細節慢速示範)、八色顏色盤、分享作品(一律先過家長閘、系統分享單、不接第三方 SDK)、成長影片(刻意不做生成式 AI 影片)。
② 1.2 的主軸:每日一蛋
把「一堆功能」變成「每天一件做得完的事」。24 座島 × 50 關 = 1,200 關手寫關卡,每 50 關孵一隻新色的龍;八種玩法各教一個 AI 怎麼學的概念——跟著畫、教牠、考牠、恐龍博士 Boss、變一下(泛化)、分得出來嗎(類別邊界)、一張就會嗎(樣本數)、找出壞掉的那張(垃圾進垃圾出)。刻意不做連勝、不做倒數、不推播、沒玩不扣分——Kids 分類最不該碰的就是製造焦慮;漏掉的天留在巢裡可以補。第 1,201 關起進無盡之海:島區用算的,混入「你決定教什麼」與「複習你教過的」兩種天生無限的關卡。關卡是確定性算出來的純靜態表,零網路。
③ 畫本、作品集、畫畫小教練、辨識 v4
我的畫本(孩子教過的每一張畫收成一本書,刻意唯讀);作品集把「小孩的畫」和「牠的腦」分開——刪教材只清連結、整隻重來不清畫本。畫畫小教練從每張畫的筆數、顏色數、覆蓋率算三種話,純模板、只講進步、不評分、不比較別人。辨識 v4 先擴基準再改:量出來「亂換顏色掉到 70%」的真因是塗滿 vs 線稿而不是色相,720 維特徵+鏡像容忍後七情境平均 92.5% → 98.5%。畫筆粗細三檔;iPad 版面重排(第一次拍 iPad 截圖才發現是照 iPhone 直式設計的)。
④ 合規口徑
沿用「不會自動上傳;只有家長主動選擇分享時,那一張圖才會離開裝置」。本版唯一的新出口是家長閘後的完整備份 ZIP 多帶了筆畫向量與 index.json——仍是家長主動匯出,App Privacy 結論不變。CFBundleLocalizations 據實宣告雙語(商店語言欄 1 → 2);主畫面標題在英文介面終於也是 AIPrentice(拍英文截圖才發現寫死中文)。家長頁收尾四段(評分 → 買咖啡 → 更多 rexcode → 版本)改由家族共用件產生。


9/6 晚上 9:51 收到 Review of your submission has been completed. It is now eligible for distribution.——從送出到通過 22 小時,零提問。首發那次被問的 Kids Category 四題,這次沒有再問;語音、裝置端 LLM、分享、備份匯出這些 Review Notes 裡主動說明的敏感點,也沒有任何一項被追問。
- 核准版本:1.2.20260905 (4) · iPhone + iPad
- 送審:2026/9/5 08:17 AM PDT · 通過:2026/9/6 21:51(台北)
- 送審項目:1 · Submission ID:
b24a396a-0262-41d9-a2d7-7c681de75659 - 狀態:✅ 已上架

過審的喜悅只維持了兩小時。1.2.20260905 的送審籃裡只放了 App Version 一項,三個打賞商品(小/中/大)留在 Prepare for Submission。Apple 的規則是app 的第一個內購必須跟一個 app 版本同籃送審,而已過審的版本進不了籃子——只好開新版本、上傳新 build、四個 item 一起送。app 程式碼零改動,只改版號與 build 號,What's New 一句「家長區多了贊助區」。晚上 11:46 送出,iOS App 1.2.20260907 (5) + In-App Purchases (3)。這一版在 1.3 送審前已過審上架。
- 版本:1.2.20260907 (5) · 送審項目 4(App Version + 3 個 IAP)
- 建立送審:2026/9/6 晚上 11:46
- 教訓:送審前的最後一個驗收永遠是「籃子裡有幾個 item」

起點是 9/11 的一則實機回報:孩子的 iPad(畫本約 100 張)做電影,跑到一半整個 app 消失,五次都一樣。這種當機不會出現在 App Store Connect——被系統因記憶體不足殺掉(jetsam)不留 crash log,實機回報是唯一的訊號。修完當機,順手把那個功能變好看:電影會動了。晚上 8:41 上傳 build 6,8:50 送出,送審籃 1 項(三個 IAP 已隨 1.2.20260907 上架,不必再放)。
- 版本:1.3.20260913 (6) · iPhone + iPad · 送審項目 1
- 送出:2026/9/13 晚上 8:50(台北) · Submission ID:
1e61717c-5b13-4902-8202-9bda1bad77a1 - 送審前:182 / 182 測試全綠;架上截圖一直是 1.0 時代的畫面、繁中一張都沒有,這次一併換掉
① 做電影時 app 消失:不是圖多,是每一幀都在漏
每一幀都先畫成一張 1080×1080 的圖再拷進影片緩衝區,整個迴圈同步跑完才回到事件迴圈——暫存記憶體一次也沒釋放,一千多幀全部堆著。三層修法:每幀自己的 autorelease pool、直接畫進影片緩衝區不產生中間圖、緩衝池設配額讓編碼器跟不上時自然等待。實測記憶體峰值完全不隨片長成長(5 鏡頭 +83 MB、18 鏡頭 +76 MB);100 張的畫本做電影 12 秒完成。
② 電影會動了:同名的畫變翻頁動畫
畫本裡連續同名的畫收成一個鏡頭,每秒 6 格輪播,同時走過畫面、上下起伏——孩子畫的五隻貓,變成五格手繪動畫。成立的原因是每張畫早就裁到筆畫外框再縮成同尺寸,同名的畫天生對齊。附帶好處是一部片收得下好幾倍的畫:100 張全進電影。自我審查抓到第一版把每一格都先解碼成圖,等於把剛修好的記憶體問題從另一條路種回去,而測試沒抓到——因為測試的假資料每格都回傳同一張圖。測試的假資料如果比正式路徑便宜,那條測試就是假的。
③ 整理畫本、開 app 變快、iPad 版面、字級
長按進整理模式:拖曳排序、丟掉畫(有確認)。電影照畫本順序取材,所以排序就是排片單;刪除只動畫檔,不碰小徒弟記得的東西。開 app 不再逐張重算特徵:改存可隨時丟棄的快取,1000 張從 460 ms 降到 159 ms,快取建出的腦與重算的腦逐位元相同。iPad 直式的畫本版面修正;考牠揭曉答案那行改跟隨系統字級。送審前再敵意複查一次整份改動,又修掉六件真的會壞的事(例如刪光畫本後重開 app 整本復活)。
④ 合規口徑
沒有變更。沒有新的資料出口:電影一樣在本機合成、分享一樣走系統分享單(家長閘後),刪除只動畫本檔案。App Privacy 宣告不動。

隔天早上 7:57 收到 Your app, AIPrentice, is "Ready for Distribution".——從送出到上架約 11 小時,零提問,比 v1.2 的 22 小時又快了一半。架上當機的修正正式送到孩子手上。
- 核准版本:1.3.20260913 (6) · iPhone + iPad
- 送出:2026/9/13 20:50 · 上架:2026/9/14 07:57(台北)
- 狀態:✅ 已上架

🎉 2026-07-11 上架 · 2026-09-06 v1.2.20260905 更新上架 · 2026-09-14 v1.3.20260913 更新上架。