一、版本介绍
Xcode 11.5 swift5 Unity3D 2018.4.10f1
⚠️如果开发的iOS是要发布到AppStore 的话,一定要查看Unity3D版本是否包含UIWebView,含有UIWebView的审核是会被驳回的哦
检查是否包含UIWebView的方法如下:
1.打开终端,输入cd空格,然后找到项目拖到终端,进入自己的项目
2.再次输入grep -r UIWebView . (之间有空格,最后的点号不要忘记输入)
3.如果包含的话会显示出来,没有就会跳到项目目录
第一次开发ios App,开发完毕后真机测试(有些功能需要),测试完毕后WeTest预审,发现了UIWebView 问题,查找资料发现更换版本比较容易,但是更换版本后会出现别的问题,所以这块要特别注意,别掉到这个坑里。
二、集成
我首次集成的版本是包含UIWebView的,当时集成的特别顺利,集成的资料如下:
集成方法:https://www.jianshu.com/p/3bf2902bf2f0
填坑方法:https://www.jianshu.com/p/ca693626d00a
填坑完毕后有些方法添加,上面网址不够详细 https://www.jianshu.com/p/a3df2922d98d
集成完毕后,在需要的地方能够正常添加Unity3D场景。
但是更改版本并且按照上述方法集成后出现了问题。
这里记录一下我集成遇到的问题
1.control may reach end of non-void function
函数在类的实现里面没有写返回值,所以提示这个,加上返回值就行了, 将函数的最后return deviceUnknown复制,在end if 后添加这个返回值,函数具体位置在classes/unity/devicesettings.mm/ParseDeviceGeneration
2.集成后真机运行,发现Unity3D总是会全屏展示,将自己IOS的页面覆盖掉
解决办法:
(1)在Unity3D 2018.5.6 版本(这一版本包含UIWebView)中更换currentConroller 与IOS设置根视图的位置
(2)在Unity3D 2018.4.10f1版本中更换位置并不适用,覆盖页面那肯定是window优先级问题,在UnityAppController.mm文件- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions方法中填写window 的优先级_window.windowLevel = 10;,然后在AppDelegate中window 也设置优先级(比上一个数值要大),这样就不会被覆盖,但是也存在另一个问题,有的弹出窗口不显示,这是没有获取到最顶端的window(appdelegate中的window),获取方式如下
let appDelegate = (UIApplication.shared.delegate) as! AppDelegate
let key window = appDelegate.window
3.Unity3D相同版本属性修改后再次更换时只需要更改Data文件即可,再重新构建
4./Users/xxx/MapFileParser.sh: Permission denied
Script-033966F41B18B03000ECD701.sh: line 2: /Users/xxx/MapFileParser.sh: Permission denied
解决办法:
1、打开终端,
2、输入以下命令:
chmod +x /Users/......./MapFileParser.sh (MapFileParser.sh所在的目录)
这是在Windws电脑上打包成ios发过来的,在mac 电脑上首先要把unity3d的程序正常运行起来,然后再去集成。
5.通信方法
UnitySendMessage("GetInfo", "getInfo", “6d802c00d7fd310a")
第一个参数是脚本类名,第二个是函数名,第三个是要传的参数值
到这里已经将遇到的问题都写完了,以前是做Android的,第一次开发IOS,并发布到AppStore,还是很有收获。最后再说一下审核发布遇到的问题吧,在ios预审总是会提示如下图,这些提示是可以不用管的。
审核中间被驳回一次,说是使用了私有协议跳转,如app-prefs:root=bluetooth ,最后改成跳转到设置界面就可以了,由于使用了蓝牙,肯定需要提供蓝牙的使用视频录像,并且回信给审核人员,第一天提交审核,第二天就审核通过了。再啰嗦几句😄,开发ios之前,如果企业的Appid 帐号还没有的话,一定要提前申请,我公司这边提交了好久才通过,反正是各种信息不匹配。第一次开发ios,大家多多指教,有错误请指出来改正,对你有帮助的,大家给点个赞😄。