ios 苹果提交审核遇到的问题

2016-11-24  本文已影响1682人  街角仰望

1、ios上架 已经上传APP了,但构建版本里面不显示

构建版本有问题,被拒绝了,看看你开发账户的邮箱,里面有具体原因 。

2、iPhone 5 Optimization Requirement

iPhone 5 Optimization Requirement 
- Your binary is not optimized for iPhone 5. As of May 1, all new iPhone apps and app updates submitted must support the 4-inch display on iPhone 5. All apps must include a launch image of the appropriate size. Learn more about iPhone 5 support by reviewing the iOS Human Interface Guidelines.

iPhone5和iPad毕竟屏幕差距摆在那里,而之前我们提交的也都是iPad版本(把app往iTunes一拖,显示简介就能看到app的适用平台)。最后发现是本次app闹了乌龙,给做成了同时支持iPhone的。

看了下工程设置,很早以前Targets->Summary->Devices就一直是 Universal,Targets->Build Settings->Combined->Deployment->Targeted Device Family也一直是iPhone/iPad的(体现在project.pbxproj,TARGETED_DEVICE_FAMILY = "1,2",1是iPhone,2是iPad。)

为何之前会被认为是仅iPad呢。

网上查了下,原来除了project.pbxproj,还与xxx-info.plist有关。再最近的修改中,其中添加了一项

<key>UIStatusBarHidden~ipad</key>
</key>

导致苹果将之处理为一个Universal程序了,并且,即使把project.pbxproj的值改为iPad,也依然坚定的这样认为。虽然在我看 来,info.plist是相对不清晰的,project.pbxproj的设置才是明确可见的,苹果不理会project.pbxproj而去看 info.plist,实在令人蛋疼。

将info.plist多出来的项删除,可以看到iTunes已经认为是iPad程序了,上传的结果也证明苹果不再拿iPhone5界面说事了。

一些补充说明:

i. 要注意的是,这是由于我们原来也一直是iPad程序,而不是一个Universal程序,否则仅仅是为了规避这条,将一个已经在外的Universal程 序弄一个iPad版本上传,苹果是不会认的。详见 http://stackoverflow.com/questions/5156382/upgrade-live-universal-app-to-ipad-only

ii.关于iPhone5的Retina。
在模拟器上即可测试。模拟器选择设备iPhone(Retina 4inch)即可.如果发现取出来的屏幕宽度是960,而非预期的1136。一个可能是因为没有加一张Retina(4-inch)的launch Images。通常,这个文件会被命名为Default-568h@2x.png。
但这个文件在Rescources下存在(文件本身存在),在Project Navigate能看到还不够。还必须保证Target->Summary->iPhone/iPod Deployment Info->Launch Images->Retina(4-inch)这个格子上实实在在的能看到那张图。
添加好了,苹果才认为是一个支持iPhone5 Retina的程序,否则在实机上也会带来黑边问题(当然在代码本身要用取出来的宽度而非960来做,否则再怎么加都没用)

3、UDID

Non-public API usage:
Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.

代码中用了udid,即UIDevice的uniqueIdentifier方法。

事实上,我们自己的代码已经能切实确认没用这个了,那就只能是没有源码的第三方库了。
更新到最新的再编译打包上传,苹果也不再说这个问题了

4、Non-public API usage

Non-public API usage:

The app references non-public selectors in GMC_MFO: _performMemoryWarning, fromDictionary:, initFromDictionary:
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.

工程中使用了和苹果私有API相似的方法名称,修改方法名称即可

5、-ObjC

Non-public API usage:

The app references non-public selectors in LoveForJorney: authenticate, expires, sendRequest:, setCenterPoints:, setCities:, setClientID:, setCurrentCount:, setDetailType:, setGeometryDelegate:, setObjectID:, setThumbnailData:, setTotalCount:, userID
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.

工程中Build Settings下Other Linker Flags里面没有加入-ObjC,加上就好啦

6、苹果ios app提交审核,一直提示本地化(简体中文simplified chinese)错误的解决办法

参考:

1、http://www.cnblogs.com/zhwl/archive/2013/07/16/3193491.html
2、http://www.cnblogs.com/ygm900/p/3940472.html
3、http://blog.csdn.net/ws1352864983/article/details/52325952

上一篇下一篇

猜你喜欢

热点阅读