从 Share Extension 跳转到 Containing App
Share Extension 这篇文章就不多讲了。
单纯的说一下从前辈那里请教来的如何从 Share Extension 跳转到 Containing App 吧。
代码
NSURL *customURL = [NSURL URLWithString:@"ShareKit://"];
SEL sel = NSSelectorFromString(@"openURL:");
NSExtensionContext *context = [[NSExtensionContext alloc]init];
[context openURL:customURL completionHandler:nil];
UIResponder *responder = self;
while (responder != nil){
if ([responder respondsToSelector:sel]) {
[responder performSelector:sel withObject:customURL];
}
responder = responder.nextResponder;
}
原理
代码是从前辈那里请教过来的,原理就是利用 UIResponder
查找响应链。直接在 Extension
中调 openURL
方法是会闪退的,因为响应不了方法。
所以使用 UIResponder
,从响应树上查找能够响应这个方法的对象,也就是 Safari
,或者其他使用原生分享的 App
。
用途
用途这块实际上也没必要多说,不过说一点,这个功能上架不会被拒,像是 QQ浏览器,微信, 支付宝 等等都有这种跳转的功能,不过 微信 的及其隐蔽。所以大家在使用中可能还是得把入口藏得深一些了。