项目上架

2024-04-27  本文已影响0人  缘之空_bb11

最近由于某些原因公司的企业证书被注销了,我去,无语事件.于是公司想将这个项目上架,然而做 IOS 开发的人都懂,哪里有那么容易的事情,可谓上一次架人都消瘦了一圈, 堪比攻打南天门😄😄, 记录下中间遇到的问题吧.

WeChat459682caa31cd91baff3bcfaebc4c906.jpg

没错 TYPESTATUS的状态为 Ineligible for 30 days, 查询资料才知道是设备被封禁了,要等.....,无语事件;

感谢您联系 Apple Developer Program 支持团队。我是 Calvin,很荣幸能协助您。
在邮件中,您表示在添加测试设备时,遇到错误提示的问题。
经查询,您所收到信息表明:登记的设备被发现存在问题。在指定时限结束之前,设备无法使用。
您可以参考“设备注册更新”以了解更多信息。
如果您希望立即与 Apple Developer Program 支持 Advisor(技术顾问)通话,请在我们的营业时间,通过我们的网站联系我们.

具体的可查看苹果官网: 设备注册更新
个人猜测,可能是注册设备时设备上存在企业证书,被检测到了将设备封了; 你可以删除手机的企业证书
我们于是只能靠打包上苹果网站,利用 TestFlight 来实现真机测试,无语....
(这里普及个知识,TestFilght 是不用审核就可以利用添加测试员来实现内部测试分发的,只需要你上传成功并构建版本即可.然后手机上安装TestFilght ,通过邮件中的兑换就可以安装测试)

WechatIMG305.jpg
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 进行升级.

萤石云IOS开发

头疼了一天, 官网介绍了有两种接入 SDK 的方法:

WechatIMG295.jpg

句句真言啊:

  1. 只能在真机上运行,模拟器运行会报错,只能真机调试;
  2. 建议使用动态库,动态库可以避免上述的崩溃问题;
  3. 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才可以安装到

app包上传到 APP Store成功后, 等啊.......等啊, 等了一天😓😓,还是没查询到构建版本.

百度了才知道; 上传成功后, APP 的同步到苹果网站的只需要 15 分钟左右,而且如果上传的ipa 包有问题的话, 就算你等到海枯石烂也无法等到😓😓,这时候一定要去看看你开发账号时关联的邮箱📮,要是 ipa 包有问题的话会给你发邮件的.

关于通用链接可以看我上一篇文章

我要说明的是要注意的几点:
1. 需要https且不带端口的域名
2. 建议Universal Links配置path,例如/app/*, 避免全域命中Universal Links跳转
3. apple-app-site-association文件到域名的根目录和.well-known子目录下, 这两个地方都放一下并且要能访问到
4. Universal Links正确的是:https://help.wechat.com/sdksample/

  1. 验证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 文件,说明配置成功。

  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];
}

问题排查可参考官方文档

WechatIMG296.jpg

注意: 一定要确认PrivacyInfo文件在Build Phases -> copy Bundle Resources 中,否则无法将其打包的时候添加进去

WechatIMG298.jpg

问题主要是缺少以下4个隐私描述:
NSPrivacyAccessedAPICategoryFileTimestamp --> C617.1
NSPrivacyAccessedAPICategoryDiskSpace --> E174.1
NSPrivacyAccessedAPICategorySystemBootTime --> 35F9.1
NSPrivacyAccessedAPICategoryUserDefaults --> CA92.1

创建PrivacyInfo文件

WechatIMG297.jpg WechatIMG299.jpg

现场测试账号登陆是成功的,但为什么审核的时候说无限期加载,登录不上?
开始我以为是因为自己的服务器不稳定导致的审核时无法访问,然后回复邮件,结果还是一样的问题;
然后查询资料后猜想,可能是处于美国的审核员的 IP 可能无法访问我们国内的服务器.需要服务器开通 IPV6 网络.

最后我们使用了阿里云服务器作为中转

WechatIMG418.jpg

`


WechatIMG420.jpg WechatIMG300.jpg

说的是审核的时候,发现应用程序的预览图和 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 以下的模拟器解决办法:

利用浏览器下载以前 OS Version 版本环境

WechatIMG303.jpg WechatIMG302.jpg

从邮件中我们可以知道, 说了两个问题, 1. 没有找到需要持久使用定位服务的功能,如果没有的话可以删除 2. 没有找到 对应使用 VoIP 的功能.
对此,我们在回复的邮件中,一方面进行文字上的解释,另一方面通过视频辅助指出使用对应功能的位置的. 注意:视频只需要地址;
注意: 视频可以上传到优酷, 审核很快, 一般 5 分钟就可审核通过, 然后就可以获取视频地址

对此,刚开始我也查询了很多资料, 有些人隐藏功能, 有人使用网页支付的, 还有人做两套支付蒙骗过关的, 但是我想说的是, 你既然想用支付宝支付,就会在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

上一篇下一篇

猜你喜欢

热点阅读