前言
- 因为在上一家公司的工作原因,有幸接触过一段时间的app混合开发 (uni-app),app开发完成之后需要上架的苹果商店
- 由于公司是一家十几人的小公司一共三个前端(包括我自己),毫无疑问这个费力不讨好的活儿就落在了我的身上了
- 万事开头难,老板在把这个光荣的任务分配给我之后我也开始着手开干了
- 首先就是在百度上搜索 app上架苹果商店 的流程等相关文章,看可否有可以参考的文章,当时找的几篇文章都是需要在mac设备上操作而且流程相当繁琐。我去(当时心里想:我总不能为了个app上架个苹果商店就去买一台苹果电脑设备吧)直接把我给劝退了
- 于是又在网上找了很多资料和咨询了许多软件开发行业的大佬后,终于找到了一款专门针对ios证书 和描述文件 以及上架苹果商店 的工具:Appuploader
- 文章的内容就是我个人在工作中总结出的app上架苹果商店从0到1的完整流程
- 注意 :因为当时总结的时间是 2022年 Appuploader工具和苹果官网的部分内容也会随着时间而进行不断的迭代(目前的Appuploader软件最新界面和苹果官网最新页面可能会和文章图片内容有所差异,但总体是一致的)
在windows系统下创建 app 打包ios需要的证书和描述文件,和ios上架苹果商店流程
- 前置条件需要一个苹果开发者的账号
- 一台windows电脑
总体流程
- 创建AppID
- 创建app专用密码
- 创建app证书
- 创建描述文件
- 添加测试设备
- 上架苹果商店相关资料准备
- 上传IPA
- 提交苹果商店审核
首先:下载第三方辅助工具 (Appuploader)
- 推荐一个好用的第三方证书管理工具Appuploader ,可以七天免费试用价格也不贵,
- 下载地址:www.appuploader.net/ 根据电脑系统下载指定版本
- 工具界面:
第一步:创建AppID
1.如图 2.使用苹果开发者账号登录 3.新增
第二步:创建App专用密码
1.如图
- 点击生成按钮后会跳转到 苹果商店网址 appleid.apple.com/
- 如图
将创建的专用密码记录下来(后面在上传IPA到苹果商店后台会用到该专用密码)
第三步:证书创建
-
如图
-
输入证书密码和名称:
javascript
这个密码不是账号密码,而是一个保护证书的密码,是p12文件的密码,此密码设置后没有其他地方可以找到,
忘记了只能删除证书重新制作,所以请务必记住密码。还有为了安全起见,密码不要太简单。
证书名称是你为了在证书列表里面便于区别的一个字符,自己好辨识就可以,尽量是是字母和数字之类
3.选择证书类型:
带distribution的是发布类型
带development的是开发类型
apple类型=ios+mac,所以开发时选择ios app development和apple 类型都是可以的
4.选择bundleID:
bash
只有部分类型的证书需要选择bundle id,例如推送证书。
因为大部分证书是不和app关联的。而是通过描述文件profile文件关联app。
5.使用appuploader服务同步
javascript
如果期望制作好证书后在其他电脑上同样可以下载到这个证书,或者和你同事同步此证书
则需要勾选使用appuploader服务同步。
否则您需要手动管理p12文件在不同电脑之间的传输,并且一但创建下载后,无法在其他电脑下载,只能手动复制文件过去。
一般情况下,推荐使用appuploader服务同步。
6.证书类型说明
javascript
IOS开发选择apple development或者ios app development 类型
ios 发布选择 apple distribution或者 ios distribution (app store and ad hoc)
开发推送证书选择 apple push notification service ssl (sandbox)
发布推送证书选择 apple push notification service ssl (sandbox & production)
其他证书不是很常用,可以自行百度各种证书说明
第四步:描述文件创建
- 如图2.新建ios描述文件
javascript
然后点击新建,然后输入描述文件名称,描述文件名称字符和数字,自己好辨识就可以。
然后选择描述文件类型,再选择bundle ID,如果没有bundle id,
可以点击 弹出框框下面的添加bundle 按钮,
bundle id也叫app id,app和描述文件绑定,不和证书绑定,
所以每个app有一个单独的描述文件,但是很多app可以公用一个证书
3.开发证书
javascript
如果全部证书旁边没有证书
可能的原因:
没有创建证书
证书是ios push类型
证书和描述文件不匹配,例如证书是ios app development,但是描述文件是app store类型
4.测试设备
javascript
如果选择的类型是ios app development 类型,则全部测试设备旁边必须有测试设备并且勾选上,
如果没有显示测试设备,点击框框下面的添加测试,然后把测试设备的udid输入,
把ios设备连接到当前pc,会自动获得设备的udid。
如果app编译后无法安装到设备,可能是因为设备的udid没有添加进入描述文件,
则需要添加描述文件后重新编译。
5.描述文件类型说明
javascript
带app store类型的是发布类型,带development的是开发类型,push没有描述文件,
所以不要问推送选择哪种描述文件类型
ios开发选择ios app development类型
发布app的时候选择app store类型。
第五步:添加测试设备
注:使用测试证书和描述文件打包的app,安装苹果手机,需要添加该手机到测试设备否则会无法安装(不需要的话此步骤可以略过)
1.如图
2.通过蒲公英平台获取UDID 地址www.pgyer.com/注:(需要注册账户且实名认证)
3.注册实名成功后进入app控制平台www.pgyer.com/manager/das...
4.如图
5.具体步骤如下图
第六步:上架苹果商店相关资料准备
- 登录ios 开发者后台 itunesconnect.apple.com/login
- 登录成功后:根据下图指示进入
- 如图
4.相关内容介绍
5.其他内容根据开发app的需求来填写
第六步:上传IPA
- 打包ipa(uni-app)
- 如图:
- 将打包成功后的IPA 下载本地
- 上传ipa
第七步: 提交苹果商店审核
选择构建版本
审核成功后就会收到邮件通知
最后: 关于提交审核上传IPA问题报错处理
参考网址:www.applicationloader.net/doc/questio...
- 上传了ipa但iTunes Connect没有构建版本问题
javascript
一、首先登录iTunes Connect 后台、查看ipa构建情况
https://appstoreconnect.apple.com/ 点击进入APP,点击活动,所有构建版本选项(下图所示),有两种情况!
1、ipa包没问题,显示正在处理,这种就是成功上传,(等待处理即可,一般十几分钟处理时间,偶尔也会要几个小时)
2、ipa有问题,没有出现版本正在处理,或者刷新页面正在处理的版本消失(到开发者邮箱查看反馈邮件原因,反馈邮件也可能在垃圾箱)
修改好苹果反馈的问题重新打包再传
二、错误反馈邮件示例及说明
错误反馈邮件示例(如下图)!如看不懂英文复制到百度翻译看下。
下图这个错误的意思是此包用开发证书打包的ipa,
上架需要用发布证书打包。 当然还有其他各种各样的原因,具体复制反馈邮件翻译看下!
2.错误反馈邮件示例及说明
javascript
错误反馈邮件示例(如下图)!如看不懂英文复制到百度翻译看下。 下图这个错误的意思是此包用开发证书打包的ipa,
上架需要用发布证书打包。 当然还有其他各种各样的原因,具体复制反馈邮件翻译看下!
证书类型不正确
javascript
错误反馈邮件示例(如下图)!如看不懂英文复制到百度翻译看下。
下图这个错误的意思是此包用开发证书打包的ipa,上架需要用发布证书打包。
当然还有其他各种各样的原因,具体复制反馈邮件翻译看下!
Invalid App Store Icon
javascript
还有一个非常常见的一个错误(如下反馈)就是APP图标问题,不能使用透明背景,一般把图标做成圆角,
圆角那边就是透明的所以不行。 苹果的图标会自动圆角的,所以不需要去改成圆角的,直接正方形的图标上传!
ITMS-90717: Invalid App Store Icon -- The App Store Icon in the asset catalog in 'AppCanPlugin.app'
can't be transparent nor contain an alpha channel.Best regards,The App Store Team
3.修改相关错误后重新打包版本号的修改
javascript
修改错误重新打包的时候记得加下版本号,比如你刚上传的是1.0版本,重新打包时增加下版本号如1.1,
如果还是跟之前上传过相同的版本号的ipa文件,上传不了
结语
- ok好了这样一个app从0到1开始的上架苹果商店的流程就完成了
- 万事开头难,博主从开始学习app上架苹果商店到最后上架审核成功一共花费了两个月的时间(整个过程中也是踩了许多的坑)
- 希望这篇文章对你有帮助,能够避免在app上架苹果商店的过程中出现各种疑难杂症和天坑(保住自己的头发)