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”没有目的字符串,但该应用程序不使用位置服务的主要内容,如果未能解决你的问题,请参考以下文章
由于 healthkit 而导致 Flutter iOS 应用被拒绝
Flutter ios 应用程序仅在 iPad 上因“使用 Apple 登录”错误而被拒绝
Flutter Android TV 应用程序被拒绝,因为“启动后崩溃”,但它在模拟器和 android 电视上正常工作。你有啥建议吗?