热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flutter:记一次磨人的AppStore上架审核

最早是想上个最小可行性版本后面慢慢迭代,谁知苹果QA这么高,一直没法过审。而且苹果这个黑盒审核简直了,一直给你相同的拒绝理由。。这个时候你只能自我反思why,思考什么是好的设计。。

最早是想上个最小可行性版本后面慢慢迭代,谁知苹果 QA 这么高,一直没法过审。而且苹果这个黑盒审核简直了,一直给你相同的拒绝理由。。这个时候你只能自我反思 why,思考什么是好的设计。。一直看苹果的 style guide,指望能讨好点他们。。

第一次提交

Guideline 4.0 Design

Your app includes an update button or alerts the user to update the app, but the app not jump to app page on Apple store

有个更新按钮没跳到 appstore,因为没发布成功不知道 Appstore 的 URL。后来决定去掉这个检查更新按钮

第二次提交

Guideline 2.1 Performence – App Completeness

We discovered one or more bugs in your app when reviewd on iPad running iOS 12.1.14 on Wi-Fi. Specifically, we were unable to load the contents in the app

附带了一张白屏的截图。

开始我以为是系统版本原因,我用的 xcode 9。Build 最高系统只到 iOS 11, 于是折腾升级 xcode 10.1, 后面再次提交。又收到了同样的 白屏拒绝。我自己本地在 ios 12.1.4 的 iPad 上是没问题的 后来我用 Testflight装了下线上版本。发现果然是 白屏.

后来找到 flutter 的一条issue

最终解决版本是参考官方文档

  • 在 archive 之前要 Ptoduct -> Clean
  • 接着命令行执行 flutter build ios
  • 最后再 archive vaildate upload

少了前置条件就会出现 白屏的状况

第 3,4,5,6 次提交

Guideline 4.2.2 – Design – Minimum Functionality

We noticed that your app only includes links, images, or content aggregated from the Internet with limited or no native iOS functionality. Although this content may be curated from the web specifically for your users, since it does not sufficiently differ from a mobile web browsing experience, it is not appropriate for the App Store.

NextSteps

We encourage you to review your app concept and work towards creating an app that offers customers an engaging and lasting experience that also meets the App Store’s high expectations for quality and functionality.

Apple Developer includes a variety of design and development resources. Download iOS templates from Apple UI Design Resources, learn more about crafting intuitive, well-designed apps with the Design Video collection, and review the iOS Human Interface Guidelines for best practices to follow when designing apps for the App Store.

一直收到这个拒绝原因~ 网上也没找到几个类似的 case 自己一直在不停的改。苹果这个黑盒,叫啥啥不应。最后终于在网上找到一个朋友的 case,他去年 11 月开始终于在 2 月份成功上了。有成功的案例就只能继续下去了~~

后来推测我可能触发了某些条件以至于一直给我重复的拒绝原因。

第9次

终于破了4.2.2这个阴魂不散的rejection

在朋友的建议下。优化了首屏的展示,search bar下接9宫格的list 底部两个tab,很传统的app布局结构。之前是写啥都像网页,

内购坑

虽然不再被4.2.2卡住,但是接下来又陷入了in-app purchase内购的争论中、苹果认为vip会员应该走内购。几番焦灼下、最能走内购了,无奈之前的微信支付对接不能直接用了。好在flutter写内购也是很方便,五天后又再次提交了审核。

后面又陷入了内购价格和截图不一致的问题。因为做了本地货币的转换,审核人员看到的价格是美元价格。几番沟通下算好了。

金融服务坑

接着又遇到了“Guideline 3.2.1(viii) ”,审核人员看到一个“贷款”类的广告。认为我们促进贷款,提供金融服务,需要我们进一步提供各种资料。。我心想这他妈又是个坑。没办法,肯定不能去提供各种资料。于是又解释了一番,balabala

我们是工具,用户也不是普通用户。。是广告从业人员,此外我们还可以过滤掉这样的内容,不显示

没有下文坑

于是又趟过去了,对方表示会继续review,接着等了足足一周还是“审核中”

后面通过 “https://developer.apple.com/contact/#!/topic/select” 询问app审核状态 然后很快就收到了回复

这次是2.1,说demo账号不对。。

仔细一看,人家把我给的账号 “fun@adbug.cn”填成了”fun@adhug.cn” 于是我回复了这个情况。

审核人员估计不好意思,今天早上就让我过了哈哈哈 至此折腾近两月算告一段落了。

总结下来:

  • 首屏布局结构尽可能要像常见的App
  • 该走内购尽量一开始就考虑内购

推荐阅读
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有