美文网首页
项目上架

项目上架

作者: 缘之空_bb11 | 来源:发表于2024-04-27 16:58 被阅读0次

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

    • 1 . 真机设备被苹果封禁.
    WeChat459682caa31cd91baff3bcfaebc4c906.jpg

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

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

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

    • 2.打包上传中遇到的问题
      2.1 图片中有 Alpha ,即透明度
      可以利用 mac 电脑自带的图片预览, 打开图片 -> 文件 -> 导出 -> 将Alpha勾选取消,生成新图片即可:
    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才可以安装到

    • 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/

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

    • 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 - 要求添加权限文件
    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
    • 7 Guideline 2.1 - Performance - 应用程序无限期加载,无法登录
    WechatIMG299.jpg

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

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

    WechatIMG418.jpg

    `


    WechatIMG420.jpg
    • 8 Guideline 2.3.3 - Performance - Accurate Metadata - 准确的元数据
    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
    • 9 Guideline 2.5.4 - Performance - Software Requirements - 软件需求
    WechatIMG302.jpg

    从邮件中我们可以知道, 说了两个问题, 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
    
    

    相关文章

      网友评论

          本文标题:项目上架

          本文链接:https://www.haomeiwen.com/subject/eflaxjtx.html