Unity适配iPhoneX iOS 11+ Home键易误操作的问题
具体可以参考:https://blog.csdn.net/cordova/article/details/80547746
2、在出Android包的时候,apk包需要小于2g,否则会有异常发生
原因:google api在内存检索时,采用的是int指针索引,当大于2g的时候就会导致指针越界
3、使用xcode给手机安装app:window---->>Deivces and Simulator
4、UserInterfaceState.xcuserstate
Xcode中保存的用户操作的GUI状态,如窗口位置,打开的标签页,在项目检查等展开的节点、 简单地调整大小的Xcode窗口将这个文件来改变和修改您的源代码控制系统进行标记。
用git管理版本库时:
1、停止追踪: 2、添加.gitignore文件 3、重新提交
git rm -r --cached .
git add -A
git commit -m "update .gitignore"
5、IOS symlink Unity libraries
勾选后,Xcode工程在Unity编辑器的安装路径下直接引用Unity ios runtime library,减少Build时间,迭代版本更快,方便测试 ;
不勾选,这些ios动态库会引入到Xcode工程中,方便工程共享使用。
6、ITMS-90809
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of new apps that use UIWebView APIs starting from April 2020. See https://developer.apple.com/documentation/uikit/uiwebview for more information.
首先进入到工程目录
grep UIWebView * -R
不出所料,果然Unity自己编译出来的libiPhone-lib.a中就有匹配。
升级到2019.3.9f1之后果然没有报错了。
这个问题在2020年6月份前,苹果只是警告,之后就必须要改掉
解决方式就是:升级unity到最新,unity在2018.4.19之后就解决了,只要大于这个版本就可以了
7、.ITMS-90683: Missing Purpose String in Info.plist NSPhotoLibraryUsageDescription
需要添加
-
NSPhotoLibraryUsageDescription -> 相册
-
NSCameraUsageDescription -> 相机
-
一定需要在后面添加内容,否则也有可能会打回
-
常用的权限
-
NSContactsUsageDescription -> 通讯录
NSMicrophoneUsageDescription -> 麦克风
NSPhotoLibraryUsageDescription -> 相册
NSCameraUsageDescription -> 相机
NSLocationAlwaysUsageDescription -> 地理位置
NSLocationWhenInUseUsageDescription -> 地理位置
Privacy - Bluetooth Peripheral Usage Description -> 蓝牙权限
Privacy - Speech Recognition Usage Description -> 语音转文字权限
Privacy - Calendars Usage Description -> 日历权限
Privacy - Contacts Usage Description -> 通讯录权限
8、Unity 导出xcode工程
1、在unity的File--》buildsetting打开的界面设置导出项目
然后点Build,就会导出ios工程项目
2、入口
3、c#的代码会按照i2cpp,将unity中的c#代码转换为Native下面的.cpp文件
4、资源 StreamingAssets -> Data/Raw
原工程中的各种资源都被压缩、打包、加密后存放在Data文件夹中
StreamingAssets文件夹中的ALL_EmptyTxt.txt文件被完整地拷贝到Data/Raw文件夹中,实际上不光是文件,文件夹也会原封不动地拷入该文件夹。
配置文件放在这里,上手机调试的话可以在Xcode工程中直接修改配置,而不需要到Unity里重新导出Xcode工程
5、Plugins/iOS -> Library/Plugins/iOS
Plugins/iOS文件夹中通常会放一些 *a.、*h、*.m文件,这些文件将拷贝至在Xcode工程的Library/Plugins/iOS文件夹中,在Xcode编译时也将被编译。
实际操作过程中,我会把自己为iOS写的OC、C、C++代码、SDK提供的.a文件放到里面,以避免每次编译后都要在Xcode工程里重新导入。
6、Icon、闪屏
在unity的playersetting中可以设置也可以在xcode工程中image.xcassets文件中设置
9、
ArgumentException: source
Parameter name: The source path cannot be empty.
UnityEditor.FileUtil.CheckForValidSourceAndDestinationArgumentsAndRaiseAnExceptionWhenNullOrEmpty
如果有这样的报错,是因为到unity导出ios工程时,勾选了Use Storyboards for Launch Screen,但是没有给设置对应的storyboard 文件
所以解决方式有两种,一:在xcode工程中创建对应的storyboards文件并设置。二:在导出时指定对应的storyboards文件,或者取消这个勾选
10、LaunchImage切换launchscreen.storyboard适配启动图
背景:WWDC在2019有session提出。到2020年4月,上架APP的启动页必须使用launchscreen.storyboard,不能再使用assert方式了。
操作:
1、设置 launchscreen.storyboard,创建一个image,然后将属性里的image设置为launchscreen,即原来的launchscreen图片
2、app icons and launch images 下launch Screen File设置为对应的launchscreen.storyboard
3、Build Settings 里搜索assets ,设置Asset Catalog Launch Image Set Name 中原来的launchscreen 去掉
11、Unity3D使用storyboard作为launch screen之后遇到的问题
由于苹果要求2020 4.30以后,所有的启动页都得使用storyboard
如何设置storyboard为启动页:
https://forum.unity.com/threads/xcode-storyboard-option-for-splash-screens-launch-screens-in-ios-build.811131/
遇到的问题:虽然设置为横屏显示,但是启动屏会先显示为竖屏,然后再显示未横屏
解决方法:
修改Unity3D导出的UnityAppController.mm文件下的supportedInterfaceOrientationsForWindow方法:
- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
// No rootViewController is set because we are switching from one view controller to another, all orientations should be enabled
if ([window rootViewController] == nil)
return UIInterfaceOrientationMaskAll;
NSInteger defaultOrientation = ( UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight);
return defaultOrientation | _forceInterfaceOrientationMask;
}
12、iOS 隐藏和显示隐藏文件的【终端】命令
显示隐藏文件:
打开『终端』这个程序,输入以下:
defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder
回车执行。
隐藏隐藏文件:
打开『终端』这个程序,输入以下:
defaults write com.apple.finder AppleShowAllFiles FALSE ; killall Finder
回车执行
13、ProjectSetting目录下的文件如果改变并上传svn的话,别人更新下来可能会将平台设置为windows平台
14、ios出ipa包的几种方式
1、通过Xcode编译软件,会在工程的Products
目录下生成 xxx.app文件
2、在桌面上新建一个文件夹名字叫Payload
,注意一个字母也不能少。并将上面的xxx.app直接拷贝到这个文件夹下面,压缩这个文件夹,并将文件夹的后缀名改为.ipa
15、
AppStore App 兼容性设置
Info.plist文件中添加一项 Required device capabilities,默认是一个数组,里面添加两个字段gps和telephony。
telephony在iPad中不可用,gps在iPod touch不可用,
这样的设置必须在首次提交应用时就设置好,以后的更改只支持增量,即之前只支持iPhone,以后想支持iPad和iPod
也可以添加其他设置
16、IOS重新签名:将已经生成的ipa包解压,用自己的证书重新打包。可以修改原ipa的包名,或者dis包改为dev包
17、现在app上传到appStore的时候,状态栏是:缺少合规证明。
解决的方法是在Info。plist文件中添加:ITSAppUsesNonExemptEncryption 设置为NO
18、Mapkit框架会使用到位置权限