ios - 如果我从共享扩展中打开包含应用程序,Apple 会拒绝吗?

标签 ios appstore-approval

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

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

感谢任何指点。

最佳答案

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

一个这样的例子是

Share Extension to open containing app

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

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

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

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

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

The fact that +[UIApplication sharedApplication], and hence -openURL:, is not available to extensions should be an important hint here.Ignoring that restriction and looking up the symbols via the Objective-C runtime is not a good idea.

很明显,thread 暗示(暗示,通过没有明确说明苹果将拒绝具有此类黑客攻击的应用这一事实)尽管苹果现在会批准该应用,但这只是一个临时解决方案。

现在这终于引出了答案:

答案:

在最近@Bangalore 举行的苹果事件中,我有机会见到了扩展团队@apple 的开发人员。我告诉他们我一直在使用上面提到的 hack 从共享扩展打开应用程序,苹果会允许吗?

他的回答:

`UIResponder`

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

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

结论:

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

针对 iOS11 的当前 iOS 版本的问题已得到解答。答案可能会在未来的 iOS 版本中失效

关于ios - 如果我从共享扩展中打开包含应用程序,Apple 会拒绝吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47398034/

相关文章:

ios - 应用程序准备销售,但未显示在应用程序商店中?

ios - SceneKit 节点跟随相机

ios - 无法 stub 方法 "title",因为模拟类 OCMock 中不存在此类方法

iphone - 为我的公司投资组合创建 iPhone 应用程序

iphone - 我们无法完成您的审核,因为我们无法将您的应用下载到 iTunes

ios - PLA 2.3 Appstore 元数据被拒绝

ios - iTunes 连接 : Availability of app to all territories not reflecting

objective-c - NSString stringByAppendingPathComponent 上的内存泄漏 :

ios - UIView翻转动画问题

iphone - 您如何为设备和模拟器编译 PJSip iPhone 以在 iOS 3 和 iOS 4 上使用虹吸管?