iOS游戏开发和提交的一些「坑」和「解决方案」
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》
鉴于在iOS类的游戏开发和提交审核的过程中老是遇到一些坑,为了避免在同一个坑里跌倒两次,故在产生了记录之的想法。经过了几个月,已经积攒了十个坑,现在将其共享出来,以后将会持续更新。
我已经将本文markdown源文件放在了Github上,通过Fork和P&R来提交你的「坑」和「解决方案」,帮助我完善之。你也可以通过关注这个项目对这些「坑」保持持续关注。
iOS设备出现本地存档丢失
描述:在苹果设备上,当系统提示存储空间已满时,发现本地的存档会丢失。
原因:在默认情况下,本地存档放在了/Library/Caches下面,根据苹果官方的描述,放在/Library/Caches目录下的任意文件将在系统弹出存储空间将满的警告时被系统清空。
解决方案:将所有数据和热更新文件放在/Library/Application Support目录下,此目录下的所有文件在收到空间将满警告时不会被移除。此外,这还避免了放在Documents目录下可能会被苹果在审核中干掉的风险。
Apple Watch 版本提交失败
描述:***向AppStore提交带Apple Watch的版本,提示失败,导致提交无法继续。
原因:Apple Watch版本的AppIcon的PNG图带了Alpha通道,故被拒。
解决方案:去除Apple Watch版本的所有AppIcon的PNG图的Alpha通道。
Apple Watch 版本审核被拒
描述:Apple Watch版本提交后,在苹果审核的阶段被拒了。
原因:在iPhone上的Apple Watch的这个应用内,我们的游戏名称显示为codename:xxx ios。
解决方案:发现在Watchkit Extension的Info.plist里,Bundle name为默认的PRODUCT_ID,这就是我们的codename,将Bundle name修正为游戏名称即可。需要注意的是Bundle name不等同于Bundle display name,前者用于系统的设置的一些显示名称,后者用于在Launcher的App的名称显示。
单机游戏内购(IAP)被破解
描述:根据后台的Counter报告,我们确信我们的单机游戏内购被破解了。
原因:一个高度可能的原因是我们把订单编号存在本地的一个缓存文件里,每次去苹果服务器询问订单是否成功时,先去此缓存文件内查找是否有相同的订单编号,若找到则说明订单有重复发。但是一旦玩家删除了这个缓存文件,则可反复利用一个已经支付成功了的订单号来反复刷了。
解决方案:最稳妥的解决方案是将订单编号存在服务端,然后对服务端的通信进行加密。我们采用了一种不走服务器的方法:即在***充值成功时,给金币的缓存文件添加一个标记位(负号),然后查询订单缓存文件时,先去查询此标记位,若找到标记位,则说明之前充值过,订单缓存文件应有内容,如果订单缓存文件内容为空,或找不到有意义的订单编号,则说明玩家作弊,此次充值金币将不会加上(作弊惩罚)。由于缓存文件事先已被AES加密过,所以玩家很难去找到该标记位。
Apple Watch OS2 运行时找不到图片
描述:Apple Watch OS1的版本一行代码没改,但运行起来却提示图片无法找到。
原因:WatchKit App 下的Images.xcassets里的图只设置了1x的图片,2x和3x没有设置。
解决方案:设置好2x和3x的图片。
用Application Loader 上传二进制时报错ERROR ITMS-90168: "The binary you uploaded was invalid."
描述:同标题。
原因:未知,可能跟Xcode升级到7有关。
解决方案:打开命令行,输入以下代码:
- cd ~/.itmstransporter
- rm update_check*
- mv softwaresupport softwaresupport.bak
- cd UploadTokens
- rm *.token
iOS 9 以下的设备不支持ReplayKit导致无法启动游戏
描述:同标题。
原因:ReplayKit是iOS9才引入的framework,所以无法在iOS9以下的设备上使用。
解决方案:打开Xcode,在target的Build Phases下搜索ReplayKit,把ReplayKit.framework的Status由Require改成Optional。同理,在遇到低版本iOS系统不支持的情况,比如iOS8以下不支持CloudKit,一律将framework的Status由Require改成Optional即可。
Xcode 7以上默认不支持http请求
描述:Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.。
原因:Xcode 7以上为了安全考虑默认只支持https请求。
解决方案:打开Xcode,编辑Info.plist或选中target的Info栏,新增字段App Transport Security Settings,将其内键Allow Arbitrary Loads设置值为YES。
Xcode 7 ERROR ITMS-90474: “Bundle Invalid…”
描述:提交二进制文件时报错:ERROR ITMS-90474: "Bundle Invalid. iPad Multitasking support requires there orientations: 'UIInterfaceOrientationPortrait,UIIinterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationPortrait' in bundle.。
原因:由于iOS 9引进了多任务处理,所以iOS应用必须设置其是否要求全屏显示。
解决方案:打开Xcode,选中target,在General一栏,将Requires full screen勾选上。
Xcode 7 ERROR UnityAds.Bundle ITMS-90535 Unexpected CFBundleExecutable Key
描述:提交二进制文件时报错:ERROR UnityAds.Bundle ITMS-90535 Unexpected CFBundleExecutable Key。
原因:老版本的UnityAds.Bundle里包含CFBundleExecutable字段,苹果在Xcode7之后会对其进行验证。
解决方案:Xcode内搜索UnityAds,找到UnityAds.Bundle里的Info.plist,删除其CFBundleExecutable字段即可,该字段在Xcode中显示的名称为:Executable file。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
谷歌悄悄为iOS推出公测版Chrome 配3D Touch功能
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 用户如果想要在iOS设备上使用更加先进的谷歌(微博)产品,那么现在将能够实现这一愿望了,因为谷歌公司已经通过苹果的TestFlight平台推出了针对iOS系统的公测版Chrome。 在此次针对iOS系统的公测版Chrome之中,谷歌还添加了3D Touch功能,从而便于用户快速地启动搜索功能、而且还能够使用无痕分页或常规标签等功能。下载了新测试版Chrome的用户就可以更新到47.0.2526.53版本的Chrome,特别是iPhone 6s用户,将能够在手机上使用新版3D Touch功能、更多的蓝牙键盘截图功能以及其它一些新功能。对于3D Touch功能,用户只需用力按压Home页面上的图标,就可以快速开启新标签、语音搜索等功能。 目前谷歌还没有明确公开其目的,但据9to5Mac的报道,任何登录Chrome测试版下载页面的用户都将碰到iOS这一选项。 对于谷歌为何没有明确公开上述事宜的原因,可能也有一个好的理由。TestFlight目前只能允许2000名测试者同时参与测试,因此我们也不难想象,如果公开宣布针对iO...
- 下一篇
声网看好WebRTC 打破其在国内“三无”状态
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 80、90后的对YY都不会太陌生,从游戏的语音工具到直播平台以及在线教育,其强大的语音工具属性是支持其业务不断发展的核心竞争力。然而这一切都绕不开一个名字—赵斌。 2013年底,YY的前任CTO赵斌正式创立了声网Agora,一家专门为企业客户提供实时音视频通信云服务的公司。在“潜伏”近2年之后,声网Agora于11月初在北京主办了“首届WebRTC大会”,并且正式宣布已经与小米互娱、金蝶云之家达成深度合作。 提到WebRTC,不少开发者可能感到有些陌生。WebRTC是2010年谷歌以6820万美元收购Global IP Solutions公司而获得的一项技术,可以支持网页浏览器实现实时语音或视频通话功能。 用赵斌的话来说,WebRTC领域在国内属于“三无”状态。即:无行业会议、无专业书籍、无搜索引擎收录。这也是为什么声网Agora的***个活动不做产品发布会,要做一个纯的行业峰会的原因。 赵斌告诉记者:“当我提起“实时通信”,所有人***反应是你是不是在说“即时通信,移动IM”?所以,声网美国分公司签下了WebRT...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库