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

Posted

技术标签:

【中文标题】由于 healthkit 而导致 Flutter iOS 应用被拒绝【英文标题】:Flutter iOS app reject because of healthkit 【发布时间】:2021-05-05 23:29:40 【问题描述】:

首先,我知道标题匹配This Question,但它们非常不同。

我在 Flutter 中开发了一个 TAXI 应用程序,它利用 Wifi/网络谷歌地图位置(地理定位器)和后台服务应用通知

Playstore 很好地接受了该应用,但 AppStore 却不接受它(即使有上诉也是 3 次)

我们注意到您的应用使用 HealthKit,但您的应用似乎不包含任何需要健康或健身数据的主要功能。

    我的应用没有使用这个 HealthKit 我的 info.plist 文件没有这方面的记录 我的 App ID 没有检查 HealthKit

现在我已经束手无策了,因为我对这段代码没有其他事情要做才能让它被接受。

非常感谢任何帮助。

APP ID 文件

INFO.PLIST 文件

【问题讨论】:

您是否使用任何权限库来请求权限?如果是这样,请确保他们也不要要求健康包权限。 执行Command + Shift + F 并搜索“健康”。看看你是否在任何地方调用 healthkit。 @aheze 我在搜索后发现了许多 healthKit 条目......我已经删除了它们,但是在新版本中,它们又回来了。似乎有一个依赖于这个 HealthKit 但如何知道哪个不是一件容易的事 @Lefty 查看他们在哪个文件中。这应该为您指明正确的方向 @aheze,我要最真诚地感谢你,我希望你能作为答案做出回应,因为我真的很想将其标记为正确答案。我做了第二次 Command + shift + f 并按照您的指示输入 healthkit,再次删除文件然后清除 BIN ... bin 中的文件是搜索中再次出现的文件。然后我编译并发送它以供审查。已经顺利通过了。谢谢先生 【参考方案1】:

应用审查人员似乎能够检测到您使用的所有 API。来自这个answer:

但是,它们似乎会扫描您应用程序的二进制文件以查找某些指示使用私有 API 的符号。一些应用程序在 iPhone OS 更新后开始崩溃,因为它们使用了这些私有 API,因此 Apple 一直在对此进行打击。

因此,如果他们说您正在使用 HealthKit,这可能意味着您的代码中的某处,您正在使用它。它可能在外部框架或您自己的代码中,但查看哪里最简单的方法是做一个

命令 + Shift + F

然后输入“Health”,它将在您的整个项目中搜索它。然后,您可以删除任何有问题的代码。

【讨论】:

非常感谢@aheze,作为 Windows 用户,我的正常搜索没有显示文件。在 virtualbox 中运行 xcode 使我能够找到这些文件。我做了第二次 Command + shift + f 并按照您的指示输入 healthkit,再次删除文件然后清除 BIN ... bin 中的文件是搜索中再次出现的文件。然后我编译并发送它以供审查。已经顺利通过了。谢谢先生【参考方案2】:

转到 Xcode 并检查您应用的签名和功能部分。如果那里有 Health Kit,请将其移除。 你可能还有一个使用 HealthKit 的依赖,如果你直接使用这个依赖,那么这个库将不会从最终的 ipa 中剥离。因此,HealthKit 将包含在您的最终包中。

做完这一切,然后回到我身边,我们会看看接下来会发生什么。

【讨论】:

HealthKit 甚至在应用程序的签名和功能部分也没有被检查。但是,在按照@aheze 的指示进行搜索后,我发现了许多 healthKit 条目......我已经删除了它们,但是在新版本中,它们又回来了。似乎存在依赖于此 HealthKit 的依赖项,但如何知道现在哪个是问题所在。有什么方法可以识别吗? 检查 Podfile.lock。在那里你会发现任何对 HealthKit 的传递依赖。然后检查依赖这些依赖的库并删除它。 之后清理项目。如果您找不到 HealthKit 的任何依赖项,请检查每个 pubspec 和 podfile 依赖项中的存储库,以及设置了 HealthKit 的存储库,删除它们。只要它不会破坏您的应用程序,那么它应该没问题。但是,如果确实如此,那么您将需要提供一些基本的使用 HealthKit 的东西,这将向 Apple 证明您首先需要 HealthKit。 可能是一个对话,或者一些基本的用户信息等。没有什么是你的应用程序的一部分,而只是让苹果认为你的应用程序需要它的东西。我认识的苹果审查团队有时会非常令人沮丧。但你必须对付他们,那你能做什么 进展如何?您是否设法删除了 HealthKit?

以上是关于由于 healthkit 而导致 Flutter iOS 应用被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

由于 HEALTHKIT 参考,Xamarin.ios 构建被拒绝

Flutter WebView 插件在 iOS 14+ 上安装时会导致应用崩溃

仅观看由于缺少 HealthKit info.plist 键而被拒绝的应用程序二进制文件

Flutter,2个动画控制器导致错误

在后台访问 healthkit 锻炼

在后台访问 healthkit 锻炼