在 Action Extension 中打開 URL

最近個人app一個小需求,在Safari中的Action Extension 需要跳轉 Containing App,試過一些接口,要么被廢棄,要么被限制,要么無效。花了一倆天尋找與試錯,明明很小的需求,卻浪費了那么多時間精力,必須記錄下:

xcode8.3 iOS8.0~iOS12可行
最后結果:
1、swift版本:

let url = NSURL(string: "webcapture://")
let selectorOpenURL = sel_registerName("openURL:")
let context = NSExtensionContext()
context.open(url! as URL, completionHandler: nil)

var responder = self as UIResponder?

while (responder != nil){
    if responder?.responds(to: selectorOpenURL) == true{
        responder?.perform(selectorOpenURL, with: url)
    }
    responder = responder!.next
}

2、OC版本:

    NSString *scheml = @"webcapture://";
    NSURL *url = [NSURL URLWithString:scheml];
    SEL selectorOpenURL = sel_registerName("openURL:");
    NSExtensionContext *context = [[NSExtensionContext alloc] init];
    [context openURL:url completionHandler:nil];
    
    UIResponder *responder = (UIResponder *)self;
    while (responder != nil) {
        if ([responder respondsToSelector:selectorOpenURL]) {
            [responder performSelector:selectorOpenURL withObject:url];
        }
        responder = responder.nextResponder;
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容