Apple拒绝如果我打开包含分享扩展的应用程序?

Vig*_*esh 0 appstore-approval ios

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

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

任何指针都很受欢迎.

San*_*ari 7

虽然有很多关于如何从共享扩展打开包含/父应用程序的问题,但没有人真正讨论提议的解决方案/黑客是否会被苹果批准或不详细.

一个这样的例子是

共享扩展以打开包含应用程序

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

在浏览一段时间之后,我宁愿在这里找到一个讨论同一主题的非常有趣的主题

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

线程问题,是否openURL允许苹果允许遍历UIResponder链以打开使用的app应用程序?(在您发布的链接中也显示了相同的想法).

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

+ [UIApplication sharedApplication],因此-openURL :,不可用于扩展的事实应该是一个重要的提示.通过Objective-C运行时查找该限制并查找符号不是一个好主意.

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

现在这最终导致了答案:

回答:

在最近举行的@班加罗尔举办的苹果活动中,我有机会见到了扩展团队@ apple的开发者.我告诉他们,我一直在使用上面提到的hack从分享扩展中打开应用程序这是苹果允许的吗?

他的回答是:

`UIResponder`
Run Code Online (Sandbox Code Playgroud)

不是私有实体,因此使用UIResponder不会违反私有API使用条件,因此使用上述黑客的应用仍然被苹果批准.但事实是,你的代码通过UIResponder链解析触发它openURL是非常昂贵的,而不是建议/首选.由于Apple似乎意识到使用它的开发人员,他们可能会在未来开始拒绝该应用程序.(必须说,他不确定最后一点,苹果拒绝应用程序,因此强调可能)

他也碰巧提到了WebView打开应用程序的用法,开发人员也使用了很长一段时间.哪个不再有效.

结论:

是的,您可以使用上面的黑客提交从扩展程序打开父应用程序的应用程序,但完全知道这只是一个临时解决方案,苹果希望您编写完全独立的共享扩展

对于iOS11的当前iOS版本,我们已回答了这个问题.在将来的iOS版本中,答案可能会失效