Flutter iOS 应用程序被拒绝,因为“NSLocationAlwaysUsageDescription”没有目的字符串,但该应用程序不使用位置服务

Posted

技术标签:

【中文标题】Flutter iOS 应用程序被拒绝,因为“NSLocationAlwaysUsageDescription”没有目的字符串,但该应用程序不使用位置服务【英文标题】:Flutter iOS app rejected because no purpose string for "NSLocationAlwaysUsageDescription", but the app doesn't use location services 【发布时间】:2020-10-04 10:56:32 【问题描述】:

我刚刚将 Flutter 应用部署到 App Store Connect 并收到拒绝,原因如下:

ITMS-90683:Info.plist 中缺少目的字符串 - 您的应用代码 引用一个或多个访问敏感用户数据的 API。该应用程序的 Info.plist 文件应该包含一个 NSLocationAlwaysUsageDescription 键 带有面向用户的目的字符串,清晰完整地解释 为什么您的应用需要数据...

ITMS-90683:Info.plist 中缺少目的字符串 - 您的应用代码 引用一个或多个访问敏感用户数据的 API。该应用程序的 Info.plist 文件应该包含一个 NSLocationWhenInUseUsageDescription 带有面向用户的目的字符串的键,清楚地解释和 完全为什么您的应用需要数据...

现在,我知道如何通过将该字符串放入我的 Info.plist 文件来解决此问题,除了此应用不使用定位服务。 (至少据我所知没有)

我想告诉 App Store Connect 我不需要定位服务。

我可以在我的 Flutter 代码中检查哪些内容可能会让 ios 认为我需要位置访问权限?

【问题讨论】:

你在这里和一个机器人打交道。它已扫描您的应用程序并确定它引用了位置服务 api。这可能来自您包含的某个库。如果您找不到引用,那么为这些字符串添加一些值可能会更简单。 这是有道理的——我希望有一些方法可以用来自己批量搜索应用程序代码以供参考。我现在正在尝试将 allowLocationSimulation="YES" 标志更改为 NO,如果这不起作用,我将按照您的建议来简单地弥补一个原因。谢谢。 【参考方案1】:

如果我没记错的话,当你介绍SKAdNetworkIdentifier 时,Apple 会要求你提供这些字符串。

但是! 如果您的应用实际上不使用用户的位置,则不提供这些字符串不应成为拒绝的理由。

因此,要么您(或小部件)实际使用该位置,要么您的应用没有被拒绝。您可以从第一段中更有可能说的事实中提取:

...您可能希望更正以下内容...

【讨论】:

以上是关于Flutter iOS 应用程序被拒绝,因为“NSLocationAlwaysUsageDescription”没有目的字符串,但该应用程序不使用位置服务的主要内容,如果未能解决你的问题,请参考以下文章

flutter ios 照片权限总是返回权限被永久拒绝

由于 healthkit 而导致 Flutter iOS 应用被拒绝

Flutter ios 应用程序仅在 iPad 上因“使用 Apple 登录”错误而被拒绝

Flutter Android TV 应用程序被拒绝,因为“启动后崩溃”,但它在模拟器和 android 电视上正常工作。你有啥建议吗?

Flutter iOS App Rejected due to UIWebView 不再被接受

Flutter 应用程序部署到 App Store 被拒绝,并出现以下错误 -