在一两天内,我将准备好将我的iPhone应用程序提交到AppStore,我很好奇那些经历过这个过程的人是否有任何关于顺利提交过程的提示/建议.
这是我所涵盖的事情;
没有内存泄漏
在实际设备上测试的性能
不崩溃:)
使用正确的证书/配置文件
我有点不确定如何在info.plist中配置"Bundle Display Name"/"Bundle Identifier"和"Bundle Name".我理解第一个是iPhone本身显示的文字,但最后一个是什么?这是否必须匹配Bundle Identifier?
我应该在info.plist中添加其他任何内容吗?我注意到,当为Adhoc发布版本时,我的应用程序在iTunes中没有任何作者/标题信息.
首先,不要担心iTunes中缺少作者/标题信息(和图标).这是使用App Store分发时到达的元数据.
正如sascha所说,您的捆绑标识符应该是唯一的,通常是您的域名向后.这需要与您在Developer Portal中创建的App Id相匹配.
显示名称(CFBundleDisplayName)是它在主屏幕上的显示方式.我发现的一个重要的事情是它可以本地化,所以如果你的应用程序被称为英语中的"啤酒",它可以在意大利语中显示为"Birra",在德语中显示为"Bier".
只要你遵循指示,机械的东西实际上是相当直接的.我发现钥匙正在准备中.在你的应用程序上线之前,你基本上没有注意到,审查过程可以从几个小时到几个星期.确保您的网站已启动并正在运行,并且能够接受(并提供)反馈.我刚刚使用了Blogger.
除非您的应用程序是微不足道的,否则现实世界会发现您没有预料到的问题,而您不满意的用户将始终是最有声音的,因此您需要能够回复!
顺便说一句,我的应用程序是美味的.
确保你有一个防火服,以处理所有迟到的审查员,他们在没有尝试应用程序或阅读其应有的描述的情况下给出了不好的评分.
我没有按照我的描述所说的不做的事情被标记下来.
审查过程无法真正做出回应,令人抓狂.
提交应用程序时,请确保在info.plist文件中正确设置版本号 - 更新应用程序时,必须增加版本号.您可以使用xx表示法或xxx表示法.(我忘记在第一次应用更新时更新它).并不是说更新和重新编译很难,但这是容易忘记的事情之一.
我同意亨特的观点.你会得到糟糕的评论.没关系.他们是蠢货.你的应用很棒.
如果您遇到证书问题,我会发现一些有用的东西:
重启XCode.
在iPhone/iPod中,进入设置>常规>配置文件确保您使用的分发配置文件在那里,并且没有其他冲突的配置文件(我有两个同一应用程序的分发配置文件).您可以直接在iPhone/iPod中删除它们.
在某些时候,您将看到"应用程序失败的代码签名验证"错误.它会让你疯了.深吸一口气.重新启动XCode,重新启动开发硬件.去撞墙,去喝酒,它会再次起作用.
然后,你会想:
清理构建目标(如果你对所有目标都生气,则清除所有目标)
将代码签名标识(在Target属性中)设置为"Do not Code Sign"
关闭Xcode
删除构建文件夹中的所有目录
打开Xcode
将代码签名标识重置为iPhone分发:证书
牺牲一只小动物.
建立.
将应用程序提交到iTunes Connect
利润!
请注意,在处理配置时,Xcode 4要好得多.
一旦您的应用获得批准,您应该将可用性日期更改为今天的日期.这可确保它显示在类别列表的顶部,按日期排序.我们为我们的应用程序iStylist Makeover执行此操作.
更新:如下所述,这不再有效.
到目前为止,这篇文章是对这个优秀问题最全面的答案:
app-store拒绝
该帖子还有关于该主题的其他资源的链接.
祝你好运,马修
文章中的信息包括:
Bugs
HIG Lite版本互联网
连接(您可能会惊讶地阅读的优秀信息)
通过
蜂窝网络设备功能实现过多的带宽使用(这里的另一个重点是救了我)
私有API
功能有限
没有解释代码
处理UserData
受版权保护的内容
使用商标图像
令人反感的内容
UIWebViews中
App Store以外的交易
价格信息应用图标和应用程序
存储图像应用说明
App Store关键词更新
评论为新应用
如果您被拒绝,您的提交日期将与您首次提交时保持相同,从而在应用程序最终可用时降低排名.如果您确实被拒绝请求Apple删除第一个提交,而不是替换被拒绝的应用程序上的二进制文件,请将其作为新应用程序提交,版本号为1.1等.
有些人建议在促销阶段将您的应用免费保留一周左右,然后再提高价格.我尝试了两种方式,到目前为止它似乎只有6种方式,而另外方式则是1/2种.对于每1000次免费下载,您可以获得10美元的0.99美元(这也是我的体验)
我遇到的一件小事.确保Small Embedded图标57x57与Large 512x512图标匹配.如果他们认为"太"不同,他们会拒绝该应用.因此,请避免尝试在较大的图标中显示更多细节.
如果您使用的是任何Apple小部件,请遵循UI准则.例如,在改变其含义的上下文中重复使用Apple的图标集(例如重新设置相机图标以获取屏幕截图,当图标保留用于显示设备的图片相册时)可能是拒绝的理由.
Apple现已(截至2010年9月9日)发布了他们的应用程序商店审核指南的正式列表,因此检查您是否违反其中任何一项是值得的:
批准指南
(需要苹果开发人员登录)
或镜子在这里:
应用商店指南
他们还有自己的App Store提交提示页面(可能需要开发人员登录).
我发现他们并没有真正检查内存泄漏和稳定性问题,更多的可用性问题.例如,我的应用程序使用核心位置在珀斯找到巴士站.当他们在加利福尼亚进行测试时,他们发现附近没有(真是惊喜!).他们没有显示超出区域的消息.
他们发现的另一件事是公交车站号码.在珀斯,它们是5位数字.Apple测试人员正在输入2位数字,并且无意中打开了火车站,为此我使用了稍微不同的代码路径,并且我描述中描述的功能不起作用.
这实际上是非常方便的反馈,并且有一个我不知道的人给它一次就好了.他们对测试的彻底性感到非常惊讶.我认为它只是某种自动静态验证工具,以确保您不会试图破坏iPhone的安全性.
显示名称和名称应该相似或相同,除非您知道它们不需要(例如,twitteriffic和twitteriffic premium都在iphone上显示为'twitteriffic',但它们是具有不同名称的不同应用程序).
捆绑标识符在某种程度上是Apple等效的注册表路径,Windows开发人员将使用HKLM\Software\Company\Application - Apple使用更像com.companyname.appname的约定.
(免责声明:不了解AppStore开发,只需掌握有关Mac和plist文件的少量知识)
我的建议是创建一个通配符分发配置文件.这样,您可以单独保留Bundle Identifier,默认值可以使用.
将"Bundle Name"设置为默认值.您可以通过重命名产品来更改显示的名称(转到项目信息屏幕,选择所有配置并搜索"产品".)您可以使用Bundle Display Name设置覆盖它,但如果您的产品名称正确,则不需要.
当您提交应用时,您应该准备好高分辨率(512x512)版本的徽标或促销图像.
如果您的应用被拒绝,Apple会告诉您要解决的问题.它们非常合理,所以不用担心.
从设备向互联网提交信息也是一个潜在的陷阱.SDK协议说:
由应用程序执行的任何形式的用户或设备数据收集,或图像,图片或语音捕获或记录(统称为"记录"),以及由应用程序执行的任何形式的用户数据,内容或信息上载,同步或传输(统称"Transmissions")必须遵守所有适用的隐私法律和法规以及与此类方面相关的任何Apple计划要求,包括但不限于任何通知或同意要求.特别是,必须向用户显示一个相当显眼的视觉指示器作为应用程序的一部分,以指示正在进行记录.
如果您执行类似提交游戏中的高分的事情,请确保您为用户提供跳过传输的机会.否则你可能会被拒绝,发生在我们身上.
顺便说一下:如果您的第一个版本通过,则无法保证所有更新都会完成.对于已经在1.0中的功能,我们的1.1被拒绝了.这非常烦人,因为更新可能正在修复一个错误,如果需要一个星期才能被拒绝,那么当你必须开始修复你认为没有破坏的东西时,你已经迟了一周.
注意关键字,不要使用其他应用名称作为关键字.(我的音乐应用程序在3周后被拒绝,因为我使用'last.fm'作为关键字.)
更新:如下所述,其他人(域名擅自占地者?)抓住了域名,因此链接现在已被破坏.它似乎最近几次易手:(.
阅读AppRejections.com当前的拒绝和接受页面,并确认您不会因Apple最近的"秘密"批准原因而发生变化.