项目上架
最近由于某些原因公司的企业证书被注销了,我去,无语事件.于是公司想将这个项目上架,然而做 IOS 开发的人都懂,哪里有那么容易的事情,可谓上一次架人都消瘦了一圈, 堪比攻打南天门😄😄, 记录下中间遇到的问题吧.
-
1 . 真机设备被苹果封禁.
没错 TYPESTATUS的状态为 Ineligible for 30 days
, 查询资料才知道是设备被封禁了,要等.....,无语事件;
感谢您联系 Apple Developer Program 支持团队。我是 Calvin,很荣幸能协助您。
在邮件中,您表示在添加测试设备时,遇到错误提示的问题。
经查询,您所收到信息表明:登记的设备被发现存在问题。在指定时限结束之前,设备无法使用。
您可以参考“设备注册更新”以了解更多信息。
如果您希望立即与 Apple Developer Program 支持 Advisor(技术顾问)通话,请在我们的营业时间,通过我们的网站联系我们.
具体的可查看苹果官网: 设备注册更新
个人猜测,可能是注册设备时设备上存在企业证书,被检测到了将设备封了; 你可以删除手机的企业证书
我们于是只能靠打包上苹果网站,利用 TestFlight 来实现真机测试,无语....
(这里普及个知识,TestFilght 是不用审核就可以利用添加测试员来实现内部测试分发的,只需要你上传成功并构建版本即可.然后手机上安装TestFilght ,通过邮件中的兑换就可以安装测试
)
-
2.打包上传中遇到的问题
2.1 图片中有 Alpha ,即透明度
可以利用 mac 电脑自带的图片预览, 打开图片 -> 文件 -> 导出 -> 将Alpha勾选取消,生成新图片即可:
2.2 项目中使用了 UIWebView 控件,苹果已经禁止使用该控件.
解决方法:
1.打开终端,cd + 把项目的工程文件所在文件夹拖入终端(即 得到项目的工程文件所在的路径)
2.输入以下命令(注意最后有个点号,而且点号和 UIWebView 之间必须有一个空格):
grep -r UIWebView.
3.以上操作都正确的话,会马上出现工程中带有 UIWebView 的文件的列表(包括在工程中无法搜索到的 .a 文件中对UIWebView 的引用)
注:引用AFNetWorking可以直接把AFNetWorking 里面的UIWebView+AFNetworking 扩展删掉就可以了,没影响的。
2.3 缺少出口合规证明
需要在 Xcode 的 Plist 中添加以下键值对,表明不使用加密;
<key>ITSAppUsesNonExemptEncryption</key>
WeChate3b16487c51c848ed7ec3e5a4215e109.jpg
2.4 由于老版本的萤石云 SDK 中包含 UIWebView, 没办法只能对其 SDK 进行升级.
头疼了一天, 官网介绍了有两种接入 SDK 的方法:
WechatIMG295.jpg句句真言啊:
- 只能在真机上运行,模拟器运行会报错,只能真机调试;
- 建议使用动态库,动态库可以避免上述的崩溃问题;
- SDK 支持的最低版本是 IOS11, 需要将 Xcode 的支持的最低版本调整到 IOS 11.
第一种按照官网导入静态包失败, 可是在打 Release 最后报错,看错误信息应该是缺少了某个依赖库,但是我对照官网折腾了几遍还是没找到报一样,只能放弃了
注意:Xcode15移除了libiconv.2.4.0.tbd,所以SDK自v5.4起,更换为libiconv.tbd
第二种是安装动态包成功,同时可以避免安装静态包,
遇到的问题是能搜索到 pod 'EZOpenSDK', '~> 5.12';
但是 pod install 的时候,安装的版本只是 'EZOpenSDK', '~> 5.2', 要是强行指定 'EZOpenSDK', '~> 5.12' 版本, pod 就会报错,无法安装;
最后百度才发现问题,是需要将 Podfile 中的 platform :ios, ’11.0’ 指定到 11.0才可以安装到
-
3 打包上传成功了,却在苹果网站上查询不到构建版本
app包上传到 APP Store成功后, 等啊.......等啊, 等了一天😓😓,还是没查询到构建版本.
百度了才知道; 上传成功后, APP 的同步到苹果网站的只需要 15 分钟左右,而且如果上传的ipa 包有问题的话, 就算你等到海枯石烂也无法等到😓😓,这时候一定要去看看你开发账号时关联的邮箱📮,要是 ipa 包有问题的话会给你发邮件的.
-
4 Universal Link(通用链接)
我要说明的是要注意的几点:
1. 需要https且不带端口的域名
2. 建议Universal Links配置path,例如/app/*, 避免全域命中Universal Links跳转
3. apple-app-site-association文件到域名的根目录和.well-known子目录下, 这两个地方都放一下并且要能访问到
4. Universal Links正确的是:https://help.wechat.com/sdksample/
- 验证Universal Links是否成功:由于苹果关闭了验证网页,所以可以使用替代测试的方案:
使用如下链接:(后面拼接你的domain域名)
https://app-site-association.cdn-apple.com/a/v1/
例如: https://app-site-association.cdn-apple.com/a/v1/spotify.com
如正常访问到 apple-app-site-association 文件,说明配置成功。
-
5 微信无法支付,项目跳到微信后再回跳App,流程就中止
支付不方便测试,可以使用微信文字分享功能来测试界面的跳转,验证Universal Link校验:
var req = SendMessageToWXReq()
req.bText = true
req.text = "hangge.com 做最好的开发者知识平台。"
req.scene = _scene
WXApi.sendReq(req)
出现这个问题问题, 是因为微信唤起App,App一定会收到系统回调。在调用Scheme回调时, 没有走 UIApplicationDelegate 回调引起的. 它们的回调方法分别是:
- (void)scene:(UIScene *)scene openURLContexts:(NSSetUIOpenURLContext *> *)URLContexts {
return [WXApi handleOpenURL:userActivity delegate:self];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionaryUIApplicationOpenURLOptionsKey, id> *)options{
return [WXApi handleOpenURL:userActivity delegate:self];
}
-
6 ITMS-91053: Missing API declaration - 要求添加权限文件
注意: 一定要确认PrivacyInfo文件在Build Phases -> copy Bundle Resources 中,否则无法将其打包的时候添加进去
问题主要是缺少以下4个隐私描述:
NSPrivacyAccessedAPICategoryFileTimestamp --> C617.1
NSPrivacyAccessedAPICategoryDiskSpace --> E174.1
NSPrivacyAccessedAPICategorySystemBootTime --> 35F9.1
NSPrivacyAccessedAPICategoryUserDefaults --> CA92.1
-
7 Guideline 2.1 - Performance - 应用程序无限期加载,无法登录
现场测试账号登陆是成功的,但为什么审核的时候说无限期加载,登录不上?
开始我以为是因为自己的服务器不稳定导致的审核时无法访问,然后回复邮件,结果还是一样的问题;
然后查询资料后猜想,可能是处于美国的审核员的 IP 可能无法访问我们国内的服务器.需要服务器开通 IPV6 网络.
最后我们使用了阿里云服务器作为中转
`
WechatIMG420.jpg
-
8 Guideline 2.3.3 - Performance - Accurate Metadata - 准确的元数据
说的是审核的时候,发现应用程序的预览图和 APP 运行出来的图片不一样,并且图片和机型不适配,要求重新截取预览图片;
1. iPhone 8 Plus 1242 X 2208(5.5英寸)
2. iPhone Xs Max 1242 X 2688 (6.5英寸)
3. iPhone15 pro max 2796 X 1290 (6.7 英寸)
由于 Xcode15 中移除了iPhone X 以下的模拟器解决办法:
WechatIMG303.jpg-
9 Guideline 2.5.4 - Performance - Software Requirements - 软件需求
从邮件中我们可以知道, 说了两个问题, 1. 没有找到需要持久使用定位服务的功能,如果没有的话可以删除 2. 没有找到 对应使用 VoIP 的功能.
对此,我们在回复的邮件中,一方面进行文字上的解释,另一方面通过视频辅助指出使用对应功能的位置的. 注意:视频只需要地址;
注意: 视频可以上传到优酷, 审核很快, 一般 5 分钟就可审核通过, 然后就可以获取视频地址
-
10 支付宝和微信第三方上架
对此,刚开始我也查询了很多资料, 有些人隐藏功能, 有人使用网页支付的, 还有人做两套支付蒙骗过关的, 但是我想说的是, 你既然想用支付宝支付,就会在Queried URL Schemes白名单中添加 alipays,所以基本上逃不过苹果扫描审核的. 不要想着隐藏支付功能.
如何区分苹果支付是否必须使用 IAP ,主要的看用户付费购买的商品/服务是否为「虚拟数字产品」。更详细地说,看商品/服务的实际消费场景是在 app 内,还是 app 之外。
在 app 内即可完成消费的,苹果要求使用 IAP。典型如电子书、在线音乐、充值类虚拟货币、游戏/直播中道具、QQ/微博等会员类产品、在视频 app 中看电影、微信表情等。
需要在 app 之外完成消费的,可以使用第三方支付。典型如线下电影票、实物电商、在行、滴滴出行/Uber 等。
然后说下自己项目上架的情况, 项目中集成了支付宝和微信没有走内购, 本想苹果会回邮件问我做个调查,谁知道直接给过了😅😅
但是下面是我在网上找了一些资料和总结:
App Store 含第三方支付被3.1.1被拒解决方案
该案例可以参考其最后的文案邮件,尤其是提供的现场的服务报告,强有力的说明了消费场景是APP 外
自己总结:
尊敬的审核员
谢谢你的耐心和认真审核,对于您提到审核条款,我们对此回应如下:
Q: Does your app access any paid content or services?
你的应用程序是否访问任何付费内容或服务?
A:是的
Q: Is the service provided within the app?
服务是在应用程序内提供的吗?
A: 不是
Q:What are the paid content or services, and what are the costs?
付费内容或服务是什么,成本是多少?
A: 没有需要付费的内容或服务
Q:Do individual customers pay for the content or services?
个人用户是否为内容或服务付费?
A: 否,我们的app内容和提供的服务不需要付费
Q: If no, does a company or organization pay for the content or services?
如果没有,公司或组织是否为内容或服务付费?
A: 否,我们的app内容和提供的服务不需要付费
Q: Where do they pay, and what's the payment method?
他们在哪里付款,付款方式是什么?
A:用户在我们的app的发现->“配件商城”和“二手农机” 里面可以购实物商品。付款方式:支付宝或者微信。
Q:If users create an account to use your app, are there fees involved?
如果用户创建一个帐户来使用你的应用,是否需要付费?
A: 不收费
备注:用户购买商品的实物或示意图在附件里(主旨在于证明消费场景在 APP 外)
1. picture1.png
2. picture2.png
3. picture3png