在 iOS 中启动应用程序时请求访问日历和推送通知是否可以?

Is it OK to request Calendar and push notifications access at app start-up in iOS?

我的应用程序需要日历和通知访问权限。 我知道这不是要求用户在应用程序首次启动时接受一堆请求的最佳方法,但目前无法重新考虑应用程序设计。 所以我在这个阶段的问题是——如果我在应用程序启动时一一提出这两个请求,App Store 会批准我的应用程序吗?或者我会违反一些重要的 Apple 准则吗?

更新

找到https://developer.apple.com/ios/human-interface-guidelines/app-architecture/requesting-permission/

如果我在启动时发出 2 个请求,我的应用是否会被拒绝尚不清楚。

也许您可以找到一种聪明的方法,通过首次启动登机流程来请求通知。

例如:https://github.com/juanpablofernandez/SwiftyOnboard

SO 不是一个很好的论坛,因为您不会从 Apple 的应用程序审查团队那里得到关于什么 will/won不会让您被拒绝的权威答案 — 只是来自其他开发人员的推测和轶事经验.也就是说...

Human Interface Guidelines you linked are how to make a "good" app that gets you good reviews, design awards, the adulation of your peers, etc. App Review Guidelines 是如何 制作一个被商店拒绝的 "bad" 应用程序。前者失败并不一定会让后者失败。

基本上可以通过三种方式处理应用程序中的 privacy/notification 权限:

  1. 在应用程序启动期间调用导致权限提示的系统API。 (无论是有条件地在您的第一次启动时,还是普遍地依赖 OS 来确保它只询问一次。)

    这可能会让用户感到不快——他们可能不清楚为什么某个应用程序会为此或那个请求权限,并且他们可能会连续收到多个权限提示(如果该应用程序需要相机、通知和联系人等等)否则。)

  2. 仅在需要时调用 permission-related API;例如如果您有一个社交媒体应用程序,其中用户 post 发短信并且有时使用相机 post pictures/video,在用户第一次尝试使用相机之前不要提示相机许可。 (大多数 permission-requiring API 给你两种方法来处理这个问题:要么你可以显式检查/请求权限,要么你可以开始使用 API 系统将显示权限自动提醒。)

    这让用户更清楚需要什么权限,但仍然会打断他们的工作流程。对于应用程序在没有用户操作的情况下执行的操作(如通知)的许可,这并不总是可行的。

  3. 如果您的应用程序首次启动时出现某种 on-boarding intro/tour 的情况,请请求许可,一次一个步骤。例如,学习应用程序的 first-launch 体验可能会让用户滑动多个屏幕来解释功能,其中一个是 "do you want notifications reminding you to study?",另一个是 "do you want to use the camera for creating your own flashcards?"。

    这有助于避免 #1 中的 "pile of unexpected prompts" 问题,但也会阻止用户立即进入您的应用。

所有这些都有 trade-offs(以及您有时可能会看到的其他变体),因此请考虑用户的观点并选择最适合您应用的内容。