程序提交了到App Stroe需要经过审核,但是不遵循Apple的iPhone Human Interface Guideline,或者使用了Private API,你的程序就很可能被拒。
这里总结一些被拒的经验与对策,也许对你有些帮助。
UI相关
相机图标
问题:
如果使用 SDK 中标准的照相机ICON(UIBarButtonSystemItemCamera),必须遵循Apple的iPhone Human Interface Guideline。一般以为是个照相机图标,那么按下后肯定是照相了(UIImagePickerControllerSourceTypeCamera)。其实不然,如果单纯的这样做,肯定会被Reject的。那么正确的做法是什么呢?
解决方法:
1、如果还是使用系统自带的图标,需要提示用户是打开『相册』还是『照相机』,比如下面FaceBook中实现的方法。
![](http://www.cocoachina.com/cms/uploads/allimg/120425/4064_120425164404_1.jpg)
2、或者干脆自己设计一个照相机图标,替代系统默认的那个
3、相同的理由,使用系统的图标,而执行的不是系统默认的动作,一样会被Reject的
大小图标
iPhone开发入门(11)— 在App Store上发布程序一文中已经讲的,发布程序需要两个图标,大小分别是 57x57 和 512x512。这两个图标不能相差太大,如果设计完全不同的两个图标是肯定不会通过审核的。
UITableView
如果 UITableView 的 cell 设置成可以编辑的有可能被Reject。(该项主要看你的运气,我也见过没有被拒的)
使用 Home 界面
程序中的背景,iTunes上的截图不能使用 iPhone 的 Home 界面,如果有 100% 会被拒。
网络通信相关
1、嵌入UIWebView的程序,需要注意如果遇到通信障碍或错误的时候,有可以恢复数据用的Retry功能。
2、网络连接通信出错的时候要有相应的错误处理,提示等。
3、如果要传递用户的信息(包括请求的参数),必须征得用户的同意。(比如照片传送到网络服务器上时也要有相应提示)
4、使用WebView等的应用程序中加载网页的时候,如果时间较长,要有相应的「Now Loading..」或 IndicatorView 等提示。
5、使用GPRS服务时,当不在服务区时,需要提示用户。
6、网络程序多在AirPlane模式下测试一下,看看有没有问题。
其他
1、设备中没有的功能,不能误导用户。比如iPod touch上没有GPS的机能,程序中如果有GPS的按钮就不能显示。
2、如果在程序中出现「iPhone XXX」的字样是不行的,需要改成「XXX for iPhone」。好像说是违法了商标使用。
3、有时候同一个程序经常发布正式版和免费版两种,在免费版中屏蔽了一些功能。如果功能的按钮还保留,只是点击后弹出提示对话框,这样的程序很可能被Reject,最好的方式还是直接不要显示功能的按钮。一句话,没有的功能压根儿就不要显示给用户。
4、免费版(限定功能版)的名称中使用 Free 或者是 Lite 的单词,不要出现 Limited Version,β 的字样。
如果你还有什么“悲剧”的经验,欢迎共享。