如果我从共享扩展中打开包含应用程序,Apple 会拒绝吗?
Will Apple Reject If I open containing app from share extension?
我正在使用 here 提供的解决方案从共享扩展中打开我的包含。它似乎没有使用任何私有 API 方式来做到这一点,尽管它很脆弱。
如果我使用了我的App,苹果会拒绝吗?任何人都有一个批准的应用程序打开包含来自共享扩展的应用程序?如果是这样,正确的做法是什么?
感谢任何指点。
虽然关于如何从共享扩展中打开containing/parent应用程序有很多问题,但none实际上详细讨论了建议的solution/hack是否会被苹果批准。
一个这样的例子是
Share Extension to open containing app
建议共享扩展不应打开容器应用程序。
前段时间浏览时,我在这里发现了一个非常有趣的讨论同一主题的帖子
https://forums.developer.apple.com/thread/27295
线程问题,苹果是否允许使用 openURL
遍历 UIResponder 链打开父应用程序的 hack? (与您发布的 link 中显示的想法完全相同)。
虽然线程再次没有提供明确的答案,是否会被苹果批准,但指出了一个非常有效的关注和警告
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.
很明显,线程暗示(暗示,通过没有明确说明苹果将拒绝具有此类黑客的应用程序的事实)虽然苹果现在会批准该应用程序,但这只是一个临时解决方案。
现在终于找到答案了:
答案:
在最近@Bangalore 举行的苹果活动中,我有机会见到了扩展团队@apple 的开发人员。我告诉他们我一直在使用上面提到的 hack 从共享扩展打开应用程序苹果会允许吗?
他的回答:
`UIResponder`
不是私人实体,因此 UIResponder
的使用不会违反私人 API 使用条件,因此使用上述 hack 的应用程序仍被 apple 批准。但事实是,您的代码通过 UIResponder 链解析以触发 openURL
是非常昂贵的,而不是 suggested/preferred。Apple 似乎意识到开发人员在使用它,他们 可能 以后开始拒绝该应用程序。 (必须说,他不确定最后一点,苹果未来拒绝应用程序因此突出可能)
他还碰巧提到了使用 WebView
来打开开发人员很久以前也使用过的应用程序。哪个不再有效。
结论:
是的,你可以使用上面的 hack 提交打开父应用程序的应用程序,但要完全意识到这只是一个临时解决方案,苹果希望你编写完全独立的共享扩展程序
iOS11 的当前 iOS 版本已回答问题。在 iOS
的未来版本中,答案可能会失效
我正在使用 here 提供的解决方案从共享扩展中打开我的包含。它似乎没有使用任何私有 API 方式来做到这一点,尽管它很脆弱。
如果我使用了我的App,苹果会拒绝吗?任何人都有一个批准的应用程序打开包含来自共享扩展的应用程序?如果是这样,正确的做法是什么?
感谢任何指点。
虽然关于如何从共享扩展中打开containing/parent应用程序有很多问题,但none实际上详细讨论了建议的solution/hack是否会被苹果批准。
一个这样的例子是
Share Extension to open containing app
建议共享扩展不应打开容器应用程序。
前段时间浏览时,我在这里发现了一个非常有趣的讨论同一主题的帖子
https://forums.developer.apple.com/thread/27295
线程问题,苹果是否允许使用 openURL
遍历 UIResponder 链打开父应用程序的 hack? (与您发布的 link 中显示的想法完全相同)。
虽然线程再次没有提供明确的答案,是否会被苹果批准,但指出了一个非常有效的关注和警告
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.
很明显,线程暗示(暗示,通过没有明确说明苹果将拒绝具有此类黑客的应用程序的事实)虽然苹果现在会批准该应用程序,但这只是一个临时解决方案。
现在终于找到答案了:
答案:
在最近@Bangalore 举行的苹果活动中,我有机会见到了扩展团队@apple 的开发人员。我告诉他们我一直在使用上面提到的 hack 从共享扩展打开应用程序苹果会允许吗?
他的回答:
`UIResponder`
不是私人实体,因此 UIResponder
的使用不会违反私人 API 使用条件,因此使用上述 hack 的应用程序仍被 apple 批准。但事实是,您的代码通过 UIResponder 链解析以触发 openURL
是非常昂贵的,而不是 suggested/preferred。Apple 似乎意识到开发人员在使用它,他们 可能 以后开始拒绝该应用程序。 (必须说,他不确定最后一点,苹果未来拒绝应用程序因此突出可能)
他还碰巧提到了使用 WebView
来打开开发人员很久以前也使用过的应用程序。哪个不再有效。
结论:
是的,你可以使用上面的 hack 提交打开父应用程序的应用程序,但要完全意识到这只是一个临时解决方案,苹果希望你编写完全独立的共享扩展程序
iOS11 的当前 iOS 版本已回答问题。在 iOS
的未来版本中,答案可能会失效