app-store-review by safaiyeh/app-store-review-skill
npx skills add https://github.com/safaiyeh/app-store-review-skill --skill app-store-review用于根据 Apple 的 App Store 审核指南评估 iOS、macOS、tvOS、watchOS 和 visionOS 应用代码的全面指南。此技能涵盖每一条指南要点,以在提交前识别潜在的拒绝问题。
支持: Swift、Objective-C、React Native 和 Expo 应用
在以下情况下使用此技能:
阅读单独的规则文件以获取详细说明、检查清单和代码示例:
| 章节 | 文件 | 关键主题 |
|---|---|---|
| 1. 安全性 | rules/1-safety.md | 令人反感的内容、用户生成内容审核、儿童类别、人身伤害、数据安全 |
| 2. 性能 | rules/2-performance.md | 应用完整性、元数据准确性、硬件兼容性、软件要求 |
| 3. 业务 | rules/3-business.md |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 应用内购买、订阅、加密货币、其他商业模式 |
| 4. 设计 | rules/4-design.md | 山寨应用、最低功能要求、垃圾信息、扩展、Apple 服务、登录 |
| 5. 法律 | rules/5-legal.md | 隐私、数据收集、知识产权、赌博、VPN、MDM |
| 风险等级 | 类别 | 章节 | 常见拒绝原因 |
|---|---|---|---|
| 严重 | 隐私与数据 | 5.1 | 缺少隐私政策、未经授权的数据收集 |
| 严重 | 支付 | 3.1 | 绕过应用内购买、定价不明确 |
| 高 | 安全性 | 1.x | 令人反感的内容、用户生成内容审核不足 |
| 高 | 性能 | 2.x | 崩溃、功能不完整、已弃用的 API |
| 中 | 设计 | 4.x | 山寨应用、最低功能问题 |
| 中 | 法律 | 5.x | 知识产权侵权、无许可证的赌博 |
Swift:
// 🔴 使用私有 API
let selector = NSSelectorFromString("_privateMethod")
// 🔴 硬编码的密钥
let apiKey = "sk_live_xxxxx"
// 🔴 为数字商品使用外部支付
func purchaseDigitalContent() {
openStripeCheckout() // 应使用 StoreKit
}
React Native / Expo:
// 🔴 JS 包中的硬编码密钥
const API_KEY = 'sk_live_xxxxx'; // 会被拒绝
// 🔴 为数字商品使用外部支付
Linking.openURL('https://stripe.com/checkout'); // 应使用 react-native-iap
// 🔴 动态代码执行
eval(downloadedCode); // 会被拒绝
// 🔴 通过 CodePush/expo-updates 进行重大功能更改
// OTA 更新仅用于错误修复,而非新功能!
Swift:
// 🟡 使用广告 SDK 时缺少 ATT
import FacebookAds // 没有使用 ATTrackingManager
// 🟡 创建账户但没有删除功能
func createAccount() { } // 但没有 deleteAccount()
React Native / Expo:
// 🟡 缺少 ATT(使用 expo-tracking-transparency)
import analytics from '@react-native-firebase/analytics';
analytics().logEvent('event'); // 没有 ATT 提示 = 会被拒绝
// 🟡 仅通过网站删除账户
Linking.openURL('https://example.com/delete'); // 必须在应用内提供!
// 🟡 社交登录但没有提供"通过 Apple 登录"
<GoogleSigninButton /> // 必须同时提供 Apple 登录选项!
// 🟠 Info.plist 中的用途字符串模糊
"This app needs camera access" // 请具体说明!
// 🟠 纯 WebView 应用(原生功能不足)
const App = () => <WebView source={{ uri: 'https://site.com' }} />;
// 🟠 iOS 应用中提及 Android
const text = "Also available on Android"; // 会被拒绝
// 🟠 生产环境中的 console.log
console.log('debug'); // 移除或包装在 __DEV__ 中
每周安装数
274
代码仓库
GitHub 星标数
65
首次出现
2026年1月21日
安全审计
安装于
codex240
opencode239
gemini-cli235
github-copilot222
cursor217
kimi-cli191
Comprehensive guide for evaluating iOS, macOS, tvOS, watchOS, and visionOS app code against Apple's App Store Review Guidelines. This skill covers EVERY guideline point to identify potential rejection issues before submission.
Supports: Swift, Objective-C, React Native, and Expo apps
Use this skill when:
Read individual rule files for detailed explanations, checklists, and code examples:
| Section | File | Key Topics |
|---|---|---|
| 1. Safety | rules/1-safety.md | Objectionable content, UGC moderation, Kids Category, physical harm, data security |
| 2. Performance | rules/2-performance.md | App completeness, metadata accuracy, hardware compatibility, software requirements |
| 3. Business | rules/3-business.md | In-app purchase, subscriptions, cryptocurrencies, other business models |
| 4. Design | rules/4-design.md | Copycats, minimum functionality, spam, extensions, Apple services, login |
| 5. Legal | rules/5-legal.md | Privacy, data collection, intellectual property, gambling, VPN, MDM |
| Risk Level | Category | Section | Common Rejection Reasons |
|---|---|---|---|
| CRITICAL | Privacy & Data | 5.1 | Missing privacy policy, unauthorized data collection |
| CRITICAL | Payments | 3.1 | Bypassing in-app purchase, unclear pricing |
| HIGH | Safety | 1.x | Objectionable content, inadequate UGC moderation |
| HIGH | Performance | 2.x | Crashes, incomplete features, deprecated APIs |
| MEDIUM | Design | 4.x | Copycat apps, minimum functionality issues |
| MEDIUM | Legal | 5.x | IP violations, gambling without license |
Swift:
// 🔴 Private API usage
let selector = NSSelectorFromString("_privateMethod")
// 🔴 Hardcoded secrets
let apiKey = "sk_live_xxxxx"
// 🔴 External payment for digital goods
func purchaseDigitalContent() {
openStripeCheckout() // Use StoreKit instead
}
React Native / Expo:
// 🔴 Hardcoded secrets in JS bundle
const API_KEY = 'sk_live_xxxxx'; // REJECTION
// 🔴 External payment for digital goods
Linking.openURL('https://stripe.com/checkout'); // Use react-native-iap
// 🔴 Dynamic code execution
eval(downloadedCode); // REJECTION
// 🔴 Major feature changes via CodePush/expo-updates
// OTA updates for bug fixes only, not new features!
Swift:
// 🟡 Missing ATT when using ad SDKs
import FacebookAds // Without ATTrackingManager
// 🟡 Account creation without deletion
func createAccount() { } // But no deleteAccount()
React Native / Expo:
// 🟡 Missing ATT (use expo-tracking-transparency)
import analytics from '@react-native-firebase/analytics';
analytics().logEvent('event'); // Without ATT prompt = REJECTION
// 🟡 Account deletion via website only
Linking.openURL('https://example.com/delete'); // Must be in-app!
// 🟡 Social login without Sign in with Apple
<GoogleSigninButton /> // Must also offer Apple login!
// 🟠 Vague purpose strings in Info.plist
"This app needs camera access" // Be specific!
// 🟠 WebView-only app (insufficient native functionality)
const App = () => <WebView source={{ uri: 'https://site.com' }} />;
// 🟠 References to Android in iOS app
const text = "Also available on Android"; // REJECTION
// 🟠 console.log in production
console.log('debug'); // Remove or wrap in __DEV__
Weekly Installs
274
Repository
GitHub Stars
65
First Seen
Jan 21, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex240
opencode239
gemini-cli235
github-copilot222
cursor217
kimi-cli191
App Store Connect CLI 崩溃排查工具:快速分析 TestFlight 崩溃报告与性能诊断
732 周安装
Voicebox 开源语音合成与克隆工具:本地化 TTS 工作室,替代 ElevenLabs
271 周安装
临床报告撰写指南:病例报告、诊断报告、临床试验报告与患者文档的AI辅助工具
271 周安装
Supabase Postgres 最佳实践指南 | 8大类别性能优化与安全规则
271 周安装
React Three Fiber物理引擎教程 - r3f-physics(Rapier)快速入门与实战
271 周安装
Flutter Drift 数据库使用指南 - 类型安全 SQLite 与响应式流查询
271 周安装
create-docs:Nuxt Content/Docus 自动生成生产级文档站点工具
271 周安装