首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从iOS 14.5或14.6开始,在共享扩展中访问UIApplication.shared.open或UIApplication.shared.openURL会产生"APPLICATION_EXTENSION_API_ONLY“

从iOS 14.5或14.6开始,在共享扩展中访问UIApplication.shared.open或UIApplication.shared.openURL会产生"APPLICATION_EXTENSION_API_ONLY“
EN

Stack Overflow用户
提问于 2021-06-07 08:43:37
回答 1查看 413关注 0票数 1

在iOS 14.5或14.6之前,我们可以通过将Require Only App-Extension-Safe API设置为NO并使用:

代码语言:javascript
运行
复制
if #available(iOS 10.0, *) {
    UIApplication.shared.open(urlToOpen, options: [:], completionHandler: nil)
} else {
    UIApplication.shared.openURL(urlToOpen)
}

但是从iOS 14.5或14.6开始,我们在构建时会遇到这样的错误:

代码语言:javascript
运行
复制
Application extensions and any libraries they link to must be built with the `APPLICATION_EXTENSION_API_ONLY` build setting set to YES.

有没有办法从iOS 14.5/14.6中的share sheet扩展启动主应用程序?

EN

Stack Overflow用户

发布于 2021-06-07 08:43:37

我想出了一个解决方案,可以让你在启动主应用的同时保持Require Only App-Extension-Safe APIYES

按照苹果的要求,将Require Only App-Extension-Safe API设置为YES

然后在扩展中使用以下代码:

代码语言:javascript
运行
复制
let sharedSelector = NSSelectorFromString("sharedApplication")
let openSelector = NSSelectorFromString("openURL:")

if let urlToOpen = URL(string: "YOURAPPURLSCHEME://whatever_you_need_to_pass"), UIApplication.responds(to: sharedSelector), let shared = UIApplication.perform(sharedSelector)?.takeRetainedValue() as? UIApplication, shared.responds(to: openSelector) {

    shared.perform(openSelector, with: urlToOpen)

}

//do the rest of extension completion stuff....
self.extensionContext?.completeRequest(returningItems: [], completionHandler:nil)
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67864793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档