【问题标题】:is it ok for another app to be able to quit my app?其他应用可以退出我的应用吗?
【发布时间】:2013-05-10 11:32:30
【问题描述】:

我正在我的应用程序中实现对 JACK (http://www.crudebyte.com/jack-ios/) 的支持(如果你好奇的话,http://audulus.com)。

JACK 应用具有退出连接到它的其他应用(例如我的)的 UI。当我收到 JACK 的通知时,我应该以编程方式退出我的应用程序。

JACK 是否应该使用 UI 来断开应用程序的连接,而不是退出它?

相关信息:

http://developer.apple.com/library/ios/#qa/qa1561/_index.html

http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/Introduction/Introduction.html 请参阅“不要以编程方式退出”

【问题讨论】:

  • 您是在 JACK 库或框架中实现其他应用程序和开发人员可以利用的支持,还是仅在您自己的应用程序中实现此功能?
  • 您打算尝试将其发布到 App Store 吗?如果是这样,我认为你做不到。
  • @SpaceDust,FWIW,使用 JACK 并且可能具有此推荐行为的应用程序已经在应用程序商店中。
  • @MichaelDautermann,我正在使用提供的 JACK 框架:crudebyte.com/jack-ios/sdk

标签: ios appstore-approval jack hig


【解决方案1】:

abort() 并非严格非法:根据经验,Apple 的审阅者会扫描您的代码以查找被禁止的 API 调用,而 abort() 不在其中。还要考虑你链接的 QA 的语言:它只提到“劝阻”和“推荐”反对使用 exit()abort()

按照这些思路,QA 和 HIG 似乎暗示使用 exit()/abort() 会导致糟糕的用户体验:“让用户控制”,HIG 说.但是,如果 JACK 确实提供了一个明确说明您的应用程序将关闭的 UI,并且用户选择基于该 UI 关闭您的应用程序,那么您实际上是通过以编程方式退出应用程序维护控制权。

也就是说,我认为这对用户没有多大好处。如果您只是断开连接,您的应用程序的资源仍会在必要时被回收——但如果您的应用程序没有被终止,那么它会在用户下次启动它时更快地启动。我敢冒险断开连接会满足 JACK 中的外观,并且用户会检查应用切换栏以查看您是否已终止。

【讨论】:

  • 不幸的是,我没有评论其他人的答案的声誉,但是@wpearse,在页面中搜索“JackClientKilled”,您会发现 JACK 确实建议客户以编程方式退出。跨度>
  • 好点——JACK 应用程序非常清楚它在做什么。但我想我更希望 JACK 避开任何可能被解释为违反 Apple 规则的请求。 FWIW,AudioBus(JACK 的替代品),只是断开应用程序。
【解决方案2】:

不,以编程方式退出您的应用程序是不可行的。苹果的文档很清楚:

https://developer.apple.com/library/ios/#qa/qa2008/qa1561.html

【讨论】:

  • 只需搜索您链接的那个页面的 exit(0)。它在他们的示例代码中。
  • 哦,我明白了!感谢您的指点。仅仅因为它在他们的示例代码中并不意味着这是一个好习惯:) 查看更新的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多