首先,Unity打包IOS必须条件:

Unity3D下载了IOS平台
下载了XCode软件(必须是MacOS 系统)
在苹果开发者中心注册了开发者帐号


第一步:注册苹果开发者帐号;

Unity3D下载IOS平台和XCode下载就不介绍了,直接开始开发者帐号申请
注意:帐号是收费的,一个是个人版或者公司版,一个是企业版(了解到APPLE的政策是,要发布到APP STORE必须用99美元的个人版或公司版Apple Developer Programs,要在非商店外下载只能使用299美元的企业版iOS Developer Enterprise)

注册地址:https://developer.apple.com/membercenter/index.action
注册说明:https://developer.apple.com/cn/support/app-account/

注册前准备:

  • 2个邮箱(299美元的必须是公司域名邮箱)
  • 邓白氏编码DUNS

注册流程:
注册APPLE ID → 注册邓白氏编码 → 获取邓白氏编码后继续验证APPLE ID的公司信息 → 等待APPLE官方审核资料 → 审核通过,缴费 → 收工

关于邓白氏编码

  • 一个邓白氏编码可以注册多个APPLE 开发者账号
  • 通过APPLE的链接申请邓白氏编码,基本上一周左右就可获得。其中邓白氏那边会打电话给你核实身份,然后发邮件给你要补充公司信息,这个公司信息到时候APPLE验证DUNS编码时会用到,两边最好一致,否则修改麻烦。
  • 新的邓白氏编码,请注意尝试次数不要超过3次,超过次数编码会被锁住,解锁及注册方面问题请找苹果客服

第二步:注册完成后

  1. 登录开发者账号
    Unity3D发布打包系列之(四)——IOS打包发布
  2. 下载开发者证书(开发者证书(分为开发和发布两种,类型为iOS Development,ios Distribution),这个是最基础的,不论是真机调试,还是上传到appstore都是需要的,是一个基证书,用来证明自己开发者身份的)
    Unity3D发布打包系列之(四)——IOS打包发布

注意一下几点:

  • appID,这是每一个应用的独立标识,在设置项中可以配置该应用的权限,比如是否用到了PassBook,GameCenter,以及更常见的push服务,如果选中了push服务,那么就可以创建生成下面第3条所提到的推送证书,所以,在所有和推送相关的配置中,首先要做的就是先开通支持推送服务的appID;
  • 推送证书(分为开发和发布两种,类型分别为APNs Development ios,APNs Distribution ios),该证书在appID配置中创建生成,和开发者证书一样,安装到开发电脑上;
  • Provisioning Profiles,这个东西是很有苹果特色的一个东西,我一般称之为PP文件,该文件将appID,开发者证书,硬件Device绑定到一块儿,在开发者中心配置好后可以添加到Xcode上,也可以直接在Xcode上连接开发者中心生成,真机调试时需要在PP文件中添加真机的udid;是真机调试和必架必备之珍品;
  • 平常我们的制作流程一般都是按以上序列进行,先利用开发者帐号登陆开发者中心,创建开发者证书,appID,在appID中开通推送服务,在开通推送服务的选项下面创建推送证书(服务器端的推送证书见下文),之后在PP文件中绑定所有的证书id,添加调试真机等;


*CRS文件创建:
Unity3D发布打包系列之(四)——IOS打包发布
或者
Unity3D发布打包系列之(四)——IOS打包发布
进入
Unity3D发布打包系列之(四)——IOS打包发布
CRS文件已经生成好了

3.进入开发者设置界面
Unity3D发布打包系列之(四)——IOS打包发布
* certificates(证书)

选中All,接着点击右上角的加号,我们先来创建开发者(真机调试)证书,提交证书和调试证书创建步骤几乎一样
Unity3D发布打包系列之(四)——IOS打包发布
这里我们Development类型证书,(用于真机调试)。选中之后进入下一个页面:
Unity3D发布打包系列之(四)——IOS打包发布
这里会提示你选择创建好的CRS文件,选择上面创建好的CRS文件,点击continue提交,就生成证书
Unity3D发布打包系列之(四)——IOS打包发布
下载下来保存到你对应得文件夹就好了,暂且不要双击安装,后面会讲解安装证书和配置文件
注意:证书最好不要创建多个,不易于管理

* identifiers(App ID)

配置App的Bundle ID,就是和XCode中对应的那个Bundle ID, 点击左边的视图identifiers下面的App IDs
Unity3D发布打包系列之(四)——IOS打包发布
点击标记2,添加AppID,设置AppID名称
Unity3D发布打包系列之(四)——IOS打包发布
设置Bundle ID
Unity3D发布打包系列之(四)——IOS打包发布
生成Bundle ID 的设置
Unity3D发布打包系列之(四)——IOS打包发布
App ID创建好之后,不需要去动它,也会在后面用到

* Devices(设备ID)**

添加你要真机调试的设备ID
Unity3D发布打包系列之(四)——IOS打包发布
设置手机名称和UDID,UDID获取通过手机连接电脑,打开iTunes软件,点击序列号字母处,显示的就是UDID
Unity3D发布打包系列之(四)——IOS打包发布

* profiles(配置文件)**

配置证书的最后一步,生成profiles,这个profiles其实最终是安装到Xcode里的,它关联证书、App ID、和Device ID,把前三者结合起来,生成一个可安装的配置文件,用于Xcode进行真机调试,用于发布应用也一样,在进行App打包生成ipa文件时,也会去验证你的证书和profiles,这也是你能否打包成功的关键。
点击第四个模块(profiles)下面的All选项,创建profiles:
Unity3D发布打包系列之(四)——IOS打包发布
Unity3D发布打包系列之(四)——IOS打包发布
Unity3D发布打包系列之(四)——IOS打包发布
Unity3D发布打包系列之(四)——IOS打包发布
Unity3D发布打包系列之(四)——IOS打包发布
开发者证书的配置完成。

注意:最终配置完成后只需下载两个文件:一个就是第一个模块里面的开发者真机调试证书、然后就是第四个模块里的profiles文件,把这两个文件下载下来,保存好避免遗失,以便接下来在Xcode中配置和使用。(PS 放好这两个文件,记住他们的位置)


Run in Xcode

第三步:Unity打包;
切换到IOS平台,进行设置
Unity3D发布打包系列之(四)——IOS打包发布

  • Run in Xcode:选择你电脑上安装的Xcode版本,或者默认Latest version,默认是你电脑上 最新版本
  • Run in Xcode as:选择Debug或者Release版本;PS:和最后Xcode打包时选择保持一致

点击Player Settings ->Other settings 设置

  • 包名设置:和安卓设置方法一样,格式:com.公司名.工程名。PS:与苹果开发者注册时Bundle ID保持一致。
  • 设备型号设置:设置只能iPhone用还是iPad用或者两个都能用,以及设备最低的系统版本设置
  • 设置其他你需要的设置
    Unity3D发布打包系列之(四)——IOS打包发布
    最后,点击Build进行打包,设置包文件夹名,保存


第四步:用你打包时候选的Xcode版本打开你刚才Build的包
其实,Xcode已经帮我们做了很多配置,只需要我们设置以下配置:
1.点击 Product->Scheme->Edit Scheme 或者进入下面界面,并点击Archive,确保Build Configuration 为 你在Unity中的选择保持一致
Unity3D发布打包系列之(四)——IOS打包发布
Unity3D发布打包系列之(四)——IOS打包发布

  • Display Name:设置你的App名字
  • Bundle Identifier:设置Build ID,来自你在注册苹果开发者帐号时Bundle ID保持一致。并且与Unity保持一致
  • Version:App版本(与Unity设置保持一致)
  • Build:版本号(与Unity设置保持一致)

2.TARGETS->Identity->Team Team选择你注册时对应的App ID 帐号。
Unity3D发布打包系列之(四)——IOS打包发布

PS:可以不用选择注册相应证书时对应的 Apple ID 帐号,而且选择别的对应/非对应帐号也都没问题。

3.TARGETS->Build Setting->Code Signing
Unity3D发布打包系列之(四)——IOS打包发布
基本不用设置,默认配置好的,如有需要可更改设置
其中下方的 Provisioning Profile 可以使用默认的 Automatic,也可以指定对应的描述文件。(一般我们使用Automatic)
注意:如果用USB将手机连接到电脑,手机端打开开发者模式,选择连接的手机,直接点击Xcode运行,就会打包到你连接的手机上,后续步骤可省略。




4.Archive设置;只能选择iOS Device,选择其他模拟器是不能Archive的
Unity3D发布打包系列之(四)——IOS打包发布
等会,Archive会弹出
Unity3D发布打包系列之(四)——IOS打包发布
5.Export 导出;点击上图中的“Export”,如下所示,很显然第一个选项是发布app的,不要点,那是个人开发者账号可以干的事情。

Unity3D发布打包系列之(四)——IOS打包发布
上图四种选项:

  • Save for iOS App Store Deployment:保存到本地 准备上传App Store 或者在越狱的iOS设备上使用
  • Save for Ad Hoc Deployment:保存到本地 准备在账号添加的可使用设备上使用(具体为在开发者账户下添加可用设备的udid),该app包是发布证书编译的(The app will be code signed with the distribution certificate.)
  • Save for Enterprise Deployment:这种主要针对企业级账户下 准备本地服务器分发的app
  • Save for Development Deployment:针对内部测试使用,主要给开发者的设备(具体也为在开发者账户下添加可用设备的udid)。该app包是开发证书编译的(The app will be code signed with your development certificate)

点击Next,继续,选择存放路径,继续
Unity3D发布打包系列之(四)——IOS打包发布
点击Next,IPA就打包成功了。


附:app需要使用手机的某些功能或者应用的时候,需要授权才可以访问,下面将展示一些info.plist上常用的一些授权。
Unity3D发布打包系列之(四)——IOS打包发布
bool类型是YES的,这个是允许访问http的网址

下面是以上授权的代码形式,可以直接拷贝到info.plist文件中:

<key>NSAppTransportSecurity</key> 
<dict> 
<key>NSAllowsArbitraryLoads</key> 
<true/> 
</dict> 
<key>NSContactsUsageDescription</key> 
<string>请求访问通讯录</string> 
<key>NSMicrophoneUsageDescription</key> 
<string>请求访问麦克风</string> 
<key>NSPhotoLibraryUsageDescription</key> 
<string>请求访问相册</string> 
<key>NSCameraUsageDescription</key> 
<string>请求访问相机</string> 
<key>NSLocationAlwaysUsageDescription</key> 
<string>始终访问地理位置</string> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string>在使用期间访问地理位置</string> 
<key>NSCalendarsUsageDescription</key> 
<string>请求访问日历</string> 
<key>NSRemindersUsageDescription</key> 
<string>请求访问注意事项</string> 
<key>NSBluetoothPeripheralUsageDescription</key> 
<string>请求访问蓝牙</string> 
<key>ITSAppUsesNonExemptEncryption</key><false/> 

注:至于TestFlight测试和上线,后续再介绍。