背景
需要在点击Extension
的时候跳转到主App
,数据传递这块暂时不考虑,只考虑如果拉起主App
。
说到底我们还是需要使用UIApplication
的openUappstoreRL:
方法来打开主App
,但是这个API
限制在Extenapplesion
中使用

解决
Exteappearnsion是否需要界面
我最开始做的是Acappreciatetion Eappearancextension
,创建它的时候有两种类型,有界面、无界面两种。到底选哪种创建呢?还需要进一步分析。

那么我们的思路就只有一个,就是用Runtime
来approve调用openURL:
。
那首先就需要找到UIApplication
对象,同样的在Extension
里面同样被禁止直接使用。

既然不能直接使用,那我们就通过响应者链条找到UIApplication
对象,拿到对象peappetiterform openURapproachL
就可以了。那为了能在响应者链条中找到UIApplication
对象,肯定需要选择有界面的类型创建了。
如何找到UIApplication
func openApp(url: URL) { var responder = self as UIResponder? while (responder != nil && !(responder is UIApplication)) { responder = responder?.next } if responder != nil { let selectorOpenURL = sel_registerName("openURL:") if responder!.responds(to: selectorOpenURL) { responder?.perform(selectorOpenURL, with: url) } } }
到这里其实已经解决了打开App的问题了,传递数据只需要用App Group
就可以了。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)