【问题标题】:Will Apple Reject If I open containing app from share extension?如果我从共享扩展中打开包含应用程序,Apple 会拒绝吗?
【发布时间】:2017-11-20 17:41:51
【问题描述】:

我正在使用here 提供的解决方案从共享扩展中打开我的包含。尽管它很脆弱,但它似乎没有使用任何私有 API 方式来做到这一点。

如果我使用我的应用程序,Apple 会拒绝它吗?任何人都有一个批准的应用程序打开包含来自共享扩展的应用程序?如果是这样,正确的做法是什么?

任何指针表示赞赏。

【问题讨论】:

  • 我投票结束这个问题,因为它是一个 App Store 批准问题。
  • @TylerTheCompiler 我同意这不完全是一个编程问题,但目的是确定是否有比其他帖子中建议的更好的方法。
  • 我投票结束这个问题,因为它是关于发布到“应用商店”的政策和程序,而不是编程。见Are developer-centric questions about application stores on topic?

标签: ios appstore-approval


【解决方案1】:

虽然有很多关于如何从共享扩展中打开包含/父应用程序的问题,但实际上没有人详细讨论提议的解决方案/黑客是否会得到苹果的批准。

一个这样的例子是

Share Extension to open containing app

建议共享扩展不应该打开容器应用程序。

在一段时间前浏览时,我发现一个非常有趣的线程在这里讨论了相同的主题

https://forums.developer.apple.com/thread/27295

线程问题,Apple是否允许使用openURL遍历UIResponder链打开父应用程序的hack? (与您发布的链接中显示的想法完全相同)。

虽然该线程再次没有提供明确的答案,但它是否会被苹果批准但指出了一个非常有效的关注和警告

+[UIApplication sharedApplication] 以及 -openURL: 对扩展不可用的事实在这里应该是一个重要提示。忽略该限制并通过 Objective-C 运行时查找符号不是一个好主意。

显然,线程暗示(隐含地,通过没有明确说明苹果将拒绝使用此类黑客攻击的应用程序的事实)虽然苹果现在会批准该应用程序,但这只是一个临时解决方案。

现在终于有了答案:

答案:

在最近@Bangalore 举行的一次苹果活动中,我有机会见到了@apple 扩展团队的开发人员。我告诉他们,我一直在使用上述黑客从共享扩展程序中打开应用程序,苹果是否允许这样做?

他的回答:

`UIResponder`

不是私有实体,因此使用 UIResponder 不会违反私有 API 使用条件,因此使用上述黑客的应用程序仍会得到苹果的批准。但事实上,您的代码通过 UIResponder 链解析以触发 openURL 的成本非常高,因此不建议/首选。由于 Apple 似乎意识到开发人员正在使用它,他们可能开始拒绝未来的应用程序。 (必须说,他不确定最后一点,苹果将来拒绝应用程序因此突出了可能)

他还碰巧提到了使用WebView 打开开发人员在很久以前使用过的应用程序。哪个不再起作用了。

结论:

是的,您可以使用上述技巧提交从扩展程序打开父应用程序的应用程序,但要完全意识到这只是一个临时解决方案,苹果希望您编写完全独立的共享扩展程序

已回答当前 iOS 版本 iOS11 的问题。答案可能会随着 iOS 的未来版本失效

【讨论】:

  • @vignesh:我的具有相同 hack 的应用在 2 天前获得批准(再次,因为它已经在 App Store 中与 hack 一起提供),如果它有任何安慰的话 :)
  • 我的应用程序使用共享扩展名(与应用程序组)通过容器应用程序从 gmail 收件箱共享文件以托管应用程序。 openURL 未在 iOS 13.1 中调用,也未从容器应用程序打开主/主机应用程序。我只需单击容器应用程序并注意发生。以前的版本工作正常。有什么发现吗?
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多