原生 Swift,为 Apple 生态而做
我们为 Apple 平台写 Swift,并把学到的东西分享出来。
我们做的每个应用都是原生的:Swift 和 SwiftUI,直接用 Apple 自己的框架,不套网页外壳,也没有跨平台层。这个网站上的工具和文章来自同一份工作:我们在开发和上架中需要的东西,对照 Apple 的文档核对过,再公开给所有人用。
我们怎么做
每个应用里都能看到的几个习惯。
- Swift 和 SwiftUI,直接用 Apple 的框架,例如 Vision、VideoToolbox、HealthKit 和 WatchKit
- 数据留在你的设备上,所以应用不用注册账号也能用
- 每一屏都手工设计,并在真机上测试
给 Swift 与 Apple 平台开发者的免费工具
它们在你的浏览器里运行,不上传任何内容。每个工具都标出规则来自哪个 Apple 页面。
- App Store 元数据检查检查 App Store 名称、副标题、关键词的字数上限、浪费的关键词,以及“免费”等价格词和 Android 字样。
- App Store 截图尺寸全部 iPhone、iPad、Mac、TV、Vision Pro、Watch 截图尺寸;检查尺寸和 Alpha 通道,并一键调整。
- App 预览视频检查对照苹果规格检查 App Store 预览视频:15–30 秒、30 帧/秒、886 × 1920 等接受尺寸、500 MB、H.264 与立体声。
- 隐私清单生成器勾选即可生成有效的 PrivacyInfo.xcprivacy(理由代码、跟踪域名、收集的数据),也能粘贴已有文件检查。
- Entitlements 权限文件生成与检查按能力生成 Xcode .entitlements 文件,或粘贴文件、codesign 输出,找出错误取值、调试键和缺失的 App Sandbox。
- App 隐私标签生成器回答 App Store Connect 的“App 隐私”问题,合并各 SDK 的隐私清单,预览产品页将显示的隐私标签。
- App Store 提交检查清单可勾选的 iOS 与 Mac 提交前检查清单:构建、商店页、截图、内购和审核备注,每一步都链到检查它的工具。
- App Store Connect 限制一览名称、副标题、关键词和描述长度,截图和预览数量,TestFlight 测试员,包大小,内购字段和优惠代码,每项都链到 Apple 原页面。
- 字符串目录翻译进度拖入 Localizable.xcstrings,按语言查看已翻译、需复核、新增、过期和缺失数量,并导出剩余字符串 CSV。
- 描述文件查看器查看 .mobileprovision 里的 App ID、团队、过期时间、类型、权限、设备 UDID 和证书指纹,不上传任何内容。
- IPA 检查器拖入 .ipa 查看 Info.plist、权限说明、隐私清单、框架、架构和体积构成,不上传任何内容。
- Xcode App 图标生成器一张 1024 像素的图,生成带 Contents.json 的 AppIcon.appiconset,支持 iOS、macOS 和 watchOS。
- AASA 文件校验从你的域名和苹果 CDN 抓取 apple-app-site-association,检查 JSON 错误、App ID,以及链接命中哪条规则。
- JSON 转 Swift Codable粘贴 JSON,得到带可选项、CodingKeys 和日期处理的 Codable struct。
- Xcode 构建设置与 .xcconfig 检查搜索 Apple 文档里的每个构建设置,查看类型和可选值;检查 .xcconfig 里会让 Xcode 忽略整个文件的行、被 // 截断的网址和拼写错误。
- Plist 转换器在 XML、二进制和 JSON 之间转换属性列表,并用树状视图查看每个值的类型。
- App Store Connect API 令牌生成器用 .p8 密钥、Key ID 和 Issuer ID 签出 App Store Connect API 的 ES256 JWT,附带 curl 命令。密钥不离开本页。
- Info.plist 权限用途说明勾选 App 用到的权限,得到 NS…UsageDescription 键和清楚的中英文用途说明,也能粘贴 Info.plist 检查。
- App Store 截图生成器把 App 原始截图加上标题、背景和可选的设备外框,按 iPhone、iPad、Mac 的精确尺寸导出。
- iPhone 和 iPad 屏幕尺寸Apple 指南里每款 iPhone 和 iPad 的点与像素尺寸、倍数和截图分类。
- .strings 转字符串目录把 .strings 和 .stringsdict 合成一个 .xcstrings,保留注释和复数;也能拆回去。
- App 审核拒信解读粘贴苹果的拒审消息,看懂引用的每条准则、修复步骤,并得到一份回复草稿。
- Xcode 与 SDK 版本要求App Store 上传现行最低 Xcode 与 SDK、Apple 公布的期限,以及每个 Xcode 的 SDK、macOS 与 Swift 版本。
- APNs 推送通知测试工具构建并检查各推送类型的载荷与请求头,在浏览器里用 .p8 密钥签名提供方令牌,得到可直接运行的 curl 命令。
- 苹果证书查看器读取 .cer、.pem 或 .p12:证书类型、团队 ID、签发者、到期时间、指纹,以及私钥是否匹配。
- App 审核指南索引按编号或关键词查找任意审核条款,链接到苹果原文和我们的指南。
- Swift DateFormatter 格式测试输入 dateFormat 格式串,查看 DateFormatter 在任意日期、Locale 和时区下的输出,附全部符号、常用预设和 YYYY/DD/hh 陷阱提示。
- Apple 开发者资源目录90 个 Apple 官方开发者页面,从注册到收款,每个都说明什么时候用,中英文都能搜索。
- Xcode 颜色集生成器生成带深色和高对比度版本的 .colorset 颜色集,支持 sRGB 或 Display P3,附 Swift 代码和对比度检查。
- App Store JWS 解码验证解码并验证 signedPayload、交易和续期信息:校验 Apple 证书链,日期、价格和通知类型一目了然。
- 崩溃报告解读粘贴 .ips 或 .crash 崩溃报告,用大白话看懂异常,查看标出你代码帧的崩溃线程,并得到可直接运行的 atos 符号化命令。
- ExportOptions.plist 生成与检查生成 xcodebuild -exportArchive 读取的 ExportOptions.plist,附归档和导出命令;也能检查旧 method 名称、类型错误和被忽略的键。
- Info.plist 检查器粘贴或拖入应用的 Info.plist(XML 或二进制),看 App Store Connect 会拒绝什么:版本号格式、Bundle ID、空白用途说明、启动屏(ITMS-90870)、Mac 类别、出口合规。
- App Store 链接生成器生成带 pt、ct、mt 的活动链接、自定义产品页、写评论和优惠码链接以及智能 App 横幅标签;按 Apple 的 30 字符规则检查活动令牌。
- ITMS 上传报错查询粘贴 App Store Connect 上传报错邮件或 Xcode 输出,看每个 ITMS 代码的含义和该改什么,每条都附上读到它的 Apple 页面。
- 公证日志解读粘贴 notarytool 日志,看懂 Mac 应用为什么没通过公证:问题按类归并、按修复顺序排列,每项附 Apple 的解释、修复方法和检查命令。
- StoreKit 配置文件查看与检查打开 .storekit 文件,查看每个 App 内购买项目和订阅,并检查重复 ID、空名称、缺失语言和 App Store Connect 字数限制。
常见问题
- 你们的应用真的是原生 Swift 吗?
- 是的。它们用 Swift 和 SwiftUI 编写,直接调用 Apple 的框架,没有哪一个是套了壳的网页应用,也没有用跨平台工具包。
- 你们的代码开源吗?
- 应用本身不开源。拾词 Lexa 是一个用 SwiftUI 写的离线英语词汇训练应用,以 MIT 许可证开源,代码在 GitHub 上,可以阅读和复用。
- 这些工具的规则从哪里来?
- 来自 Apple 自己的页面:App Store Connect 帮助、TN3208 这类技术说明、Xcode 构建设置的定义和 App 审核指南。每个工具都会给每条提示附上对应页面的链接,规则如果只是开发者的报告、Apple 没有写下来,也会明说。
- 我发现某个工具有错误。
- 请告诉我们。这些工具都对照真实文件和 Apple 的页面核对过,规则有错我们希望尽快改。可以用任意页面底部的“联系我们”。