不说话,装高手。
Maintain silence and pretend to be an experta
上架ios应用需要准备几样东西
一台装有XCode的MacBook电脑,用来编译项目
注册Apple Developer 个人账号,在找掌握Apple Developer企业账号的人,叫他把你加进组织,这样你就能用你自己的账号操作
一台苹果手机,主要用来真机测试
证书请求文件,一般称呼为CSR,一会请求证书需要用到这个东西,首先打开应用程序 > 实用工具 > 钥匙串访问.app,左上角点击钥匙串访问 > 证书助理 > 从证书颁发机构请求证书…,如下图所示:
在如下图界面,用户电子邮件地址:填你开发者账号注册邮箱,常用名称:随便起但是要方便寻找,选择储存在磁盘(CA电子邮件地址就不用填了),放到桌面上,最好跟项目放到一起
有CSR之后就可以去苹果开发中心生成证书了
登陆开发者中心后看到如下界面,点击下面框框的那块
申请证书
一下操作需要执行两次,因为我们需要一个测试证书和一个发布证书
点击download将证书下载到本地
注意:证书下载到本地后一定要双击一下导入钥匙串里面
只有注册了App Id,你才可以在App Store Connect中新建App
点击Register,App Id注册成功
真机测试所用的设备必须在开发者中心注册,否则应用装不上去
点击Register注册成功
该操作同上面一样也需要执行两次,分别用测试证书和发布证书注册debug和release的配置文件,生成的文件需要鼠标双击导入XCode,要不然配置时选不到
点击确定后就能download配置文件,download下载后记住一定要双击导入XCode
创建成功后里面的信息能填的尽量填下,要不会提交不了,里面还有一个构建版本,这个是需要在XCode中打包最后由XCode传上来的
在构建应用时说明下,苹果官方发出的声明说:2020年3月之前已经上线的项目,可以继续使用UIWebView继续迭代版本,每次提交审核会收到苹果的警告邮件;2020年3月之后的项目,必须使用WKWebView,提交审核才能通过,不然提示二进制数据错误。详情苹果官方说明点击下面链接
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.
在cordova-ios6.1.0之前我们是通过一个官方插件将UIWebview转成WKWebview,用法如下
cordova plugin add cordova-plugin-wkwebview-engine
// 在config.xml做出加入配置
<preference name="WKWebViewOnly" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
cordova-ios6.1.0之后已经将UIWebview完全剔除,所以不需要上面那个插件
cordova platform add ios@6.1.0
在使用WKWebview时候,我们会发现请求接口或者获取手机本地图片会发生跨域,这是因为WKWebview安全机制的问题,原先UIWebview是支持跨域的,接口请求的跨域我们可以通过后台配置跨域请求,手机本地图片跨域我们在XCode中找到CDVWKWebViewEngine.m文件
// 在这个文件中找到这个方法
- (WKWebViewConfiguration*) createConfigurationFromSettings:(NSDictionary*)settings
{
WKWebViewConfiguration* configuration = [[WKWebViewConfiguration alloc] init];
...
这里还有一部分代码,不用删除
...
//在return上面添加下面两行代码
[configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
[configuration setValue:@YES forKey:@"_allowUniversalAccessFromFileURLs"];
return configuration;
}
解决跨域问题,Cookie获取不到的情况。
进去 platform > ios目录,这里就是整个cordova-ios项目,在开始之前我们先把一些能做的东西做了,在这个目录下进入 项目名 > Images.xcassets目录,这里存放的是应用的图表以及启动图,在这里我们把应用图表给替换了,我使用的是一款叫Asset Catalog Creator的软件,导入一张1024*1024的图片就可以生成我们项目所需要的App icon,我们把它生成的AppIcon.appiconset文件夹替换掉原来的AppIcon.appiconset文件夹,这样icon就配置完成了
双击xxxxxxx.xcodepro文件将项目导入XCode,下面进行XCode的配置
到这一步我们应用基础配置、证书配置、信息配置基本完成
测试我们分两种方法,模拟器测试和真机测试
真机测试方法一样,前提是用来测试的手机必须是在开发者中心注册过的,要不然安装包装不进去。把手机连接数据线插件来,XCode会自动检测注册过的手机,之后打开下拉框就能看到真机名称,之后选择再点击三角形即可
应用经过测试过后就可以打包构建版本提交到App Store Connect中进行审核了
打开下拉框选中小锤子,在点击Product > Archive就可以打包构建版本,打包成功后会出现有图界面,接下来先执行第一步验证构建版本,如果验证不通过的话就算提交上去也是审核不过的,验证通过了就可以执行第二步上传构建版本,一般来说会因为网络问题卡一段时间,不过问题不大,上传成功了一般过一会就能在App Store Connect中找到构建版本,之后填写相关资料就可以提交审核了
上传成功了但是又不出现构建版本,这时候请注意自己的邮箱,一般有问题的构建版本都不会出现在App Store Connect中
列举几个我遇到的问题:
这个是原因上面已经提过,因为ios现在已经弃用UIWebView了,所以我们提交的构建版本全部都要是用WKWebview,要不然就算上传成功了 App Store Connect也会因为元数据出错为由拒绝
出现这个错误是因为我应用用到了蓝牙功能(NSBluetoothAlwaysUsageDescription)但是并没有在info.plist上声明权限,所以我们回到info.plist上把这个权限声明一下就好
这个问题一般是审核的人对这个应用有一些疑问,他会提出几个问题需要你回答,这时候你只需要认真用双语来回答他的问题就行,记住文字一定要友好