Flutter IOS 提交AppStore 审核失败

App 端更新相关的第三方 SDK,比如使用ASI 或者 AFN 的版本太低,使用最新的AFN即可解决问题。当然这些做完之后最好在Mac 上面搭建 IPv6网络供测试人员进行完测试再重新发布。

第三方登录、支付、分享未安装应用,提示下载被拒

这个问题其实被拒的原因有两种,第一种是未安装应用没有任何提示,这种情况下相当于应用有无效的按钮所以会被拒;第二种是提示下载对应的第三方 App,这也是苹果所不允许的。

虚拟产品未使用应用内支付(IAP)被拒

根据苹果官方最新的审核条款:如果你希望通过付费才可以解锁你的应用当中的一些功能(例如,订阅内容,游戏货币,游戏关卡,获取优质内容,解锁完整版本),你必须使用应用内付费(IAP)。如果这种情况下,应用使用了其他的第三方支付,应用将被拒绝上架。

解决方案:

审核的时候,把相应的虚拟产品隐藏起来,通过后再放出来,此招有风险,可能会受到警告信,甚至被封号,如果用户量小就无所谓了,先把App 搞上架!

审核的时候,走 IAP 的支付方式,审核完成后再通过服务器配置动态切换到支付宝、微信等第三方支付。该法类似于方案1,也存在风险。

学习58同城,让用户去网站购买产品,买了产品的账号到移动端使用功能。

老老实实的使用 IAP 吧。

使用后台定位被拒

关于位置服务苹果的审核条款原文如下:

使用位置服务的应用程序必须提供和位置服务直接相关的功能。使用基于位置的API不允许用于提供紧急服务,或者实现自动控制车辆、飞行器以及其他设备(小型的设备例如小型无人机和玩具例外),远程控制汽车警报系统等。在收集、传输和使用用户的位置数据之前,请确保你已经取得了用户的同意。如果应用程序使用了后台定位服务,务必在应用当中阐明其目的。并且使用后台定位的话需要提供一个明确的提醒告诉用户这么做会加快电量消耗。

一般应用在这一块被拒的原因有以下几种:

1.应用根本不需要定位功能。

2.应用需要定位功能,但是只需要短暂的获取少数的用户的位置,比如美团,新闻类的应用需要获得当前用户的所在城市,却使用了后台定位模式。

3.应用确实需要使用后台定位,比如打车类软件,但是应用中却没有任何界面展示这些定位数据。

解决方案:

4.如果你的应用根本不需要定位功能,但是还是在info.plist里面添加了location in theUIBackgroundModes key ,那么在plist文件里面移除UIBackgroundModes key就可以,这中情况较少,新手小白会犯这种错误。

5.如果只是简单获取位置不需要使用后台定位,只需要去掉info.plist 的文件中的 UIBackgroundModes 即可。

6.这种情况比较复杂,推荐的做法是通过表格或者轨迹展示出后台定位的数据,再提交审核的时候告诉苹果那个功能需要后台定位,具体展示后台定位的数据在那个界面,最后需要 Continued use of GPS running in the background can dramatically decrease battery life加到 App 描述里面,可以参考滴滴出行的描述,否则也会被拒绝。

info.plist 权限配置被拒

iOS 10 之后如果需要调用相机,蓝牙等设备时,需要在 info.plist 文件中进行相应的配置,否则应用会直接崩溃,在 iOS 10 之前则是无法访问。另外,如果在 info.plist 中调用了配置了权限在应用中却没有使用到也是会被拒的。

解决方案:

一定要注意自己的 App 在使用中用到了哪些权限,不要添加无用的权限,也不要缺少必要的权限。

应用提示更新被拒

应用内不能有任何提示更新应用的字样,且应用的更新只能通过 AppStore。因为苹果对于应用的更新有自己的一套策略,所以禁止应用本身提供更新方式,只要应用内出现。

解决方案:

如果不是很必要的话,尽量将应用内涉及到应用更新的部分去掉。如果真的需要使用应用更新,推荐的方法是应用启动的时候获取下应用在 AppStore上面的版本号,与自己的版本号进行比较,当自己的版本号小于 AppStore 上面的版本号时,提示更新,否则的话不显示更新相关的内容。

隐私条款问题被拒

在未获得用户事先允许,或未告知用户信息将被如何,在哪里使用的情况下,应用不可以传输用户数据。

解决方案:

《网站服务协议》《隐私条款》这些都不要少,注册时候让用户可勾选。另外注明需要的用户信息用来做什么。

未通过 HTTPS 访问被拒

App Transport Security(ATS) 是 Apple 为增强 iOS App 网络通信安全提出的安全功能,适用于iOS App 和 App Extension;在启用 ATS 之后,它会强制应用通过HTTPS(而不是 HTTP )连接网络服务。 WWDC 2016上提出,2016年底或2017年初,具体时间未定。App Store上架审核加强对ATS 配置的review,即强制应用必须通过HTTPS连接网络服务,而不是随手将NSAllowsArbitraryLoads置为 YES,否则审核不予通过。

解决方案:

ATS 的提出,是为了在系统层面保障iOS APP 网络通信的安全;Apple 只所以加强对ATS 配置的审核,是为了防止开发者们遇到ATS相关的场景时,只是简单地将 ATS完全关闭(只要没有强制性措施,开发者会这么做);在此基础上,App审核同样会遵循原则:App Review will require “reasonable justification” for most ATS exceptions。

Apple 官方给出的可以通过审核的声明 demo 如下:

1.必须使用第三方提供的服务,但是其没有支持 HTTPS;

2.必须通过域名连接到设备,但该设备不能支持安全连接;

3.必须展示不同来源的网页内容,但是不能基于 NSAllowsArbitraryLoadsInWebContent支持的类(UIWebView / WKWebView)实现;

4.载入加密的媒体资源并且其中不涉及个人信息。

由于 Apple 官方并没有给出 ATS 审核的完整说明,ATS 审核时什么才是合适合理的声明也没有明确的客观定义,以上 demo 描述仅能作为参照。

/ AppStore上架提示被驳回案例一 /

Dear Developer,

We identified one or more issues with a recent delivery for your app, “应用名称” 1.0.0 (1). Please correct the following issues, then upload again.

ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSMicrophoneUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Though you are not required to fix the following issues, we wanted to make you aware of them:

ITMS-90078: Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature’s entitlements do not include the ‘aps-environment’ entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the ‘aps-environment’ entitlement. Xcode does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor’s Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_re

审核错误提示

需要在Info.plist 文件下面添加麦克风权限

NSSpeechRecognitionUsageDescription

App需要您的同意,才能访问语音识别

或者在Xcode工具里面进行添加

应用注册并申请了通知服务

需要在用Xcode打开的工程文件Runner.entitlements文件下配置 aps 环境

<?xml version="1.0" encoding="UTF-8"?>

aps-environment

development

配置完成后在Xcode编辑区域将会出现Push Notificaitions选项

/ AppStore上架提示被驳回案例二 /

App Store Connect

Dear Developer,

We identified one or more issues with a recent delivery for your app, “应用名称” 1.0.1 (2). Please correct the following issues, then upload again.

ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSCalendarsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSBluetoothPeripheralUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app’s code references one or more APIs that access sensitive user data. The app’s Info.plist file should contain a NSMicrophoneUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn’t contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Android核心知识点

面试成功其实是必然的,因为我做足了充分的准备工作,包括刷题啊,看一些Android核心的知识点,看一些面试的博客吸取大家面试的一些经验。

下面这份PDF是我翻阅了差不多3个月左右一些Android大博主的博客从他们那里取其精华去其糟泊所整理出来的一些Android的核心知识点,全部都是精华中的精华,我能面试到现在2-2资深开发人员跟我整理的这本Android核心知识点有密不可分的关系,在这里本着共赢的心态分享给各位朋友。

不管是Android基础还是Java基础以及常见的数据结构,这些是无原则地必须要熟练掌握的,尤其是非计算机专业的同学,面试官一上来肯定是问你基础,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太大问题的。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太大问题的。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值