美文网首页
SFSafariViewController与原生交互的记录

SFSafariViewController与原生交互的记录

作者: 床前明月_光 | 来源:发表于2019-05-09 17:18 被阅读0次

背景:

来源于一个需求,在app中用SFSafariViewController调用第三方的网页支付后,拿到支付结果通知原生跳转到对应的界面。

为什么要用 SFSafariViewController 呢, 因为 SFSafariViewController中可以保存着用户的账号和密码,用户支付过一次之后,下次用户进来就不用蛋疼的再重新输入账号密码了。

所以就引发了另外一个问题: SFSafariViewController 怎么跟原生交互呢,查了一遍SFSafariViewController的API,然并卵,只首帧才有那么几个相应的回调。并没有WKWebviewUIWebView那么多强大的与原生交互的方法。

Google了一波之后,找到了一个比较奇葩的方法来交互。那就通过 CFBundleURLType来实现的

在打开第三方的支付网页支付完成后,回调到指定的url, 指定的 url 页面一般都是自己公司的,所以在上面触发一个伪协议, 该伪协议scheme
就是项目中info.plistCFBundleURLType指定的。之后就会触发

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options

在该方法中拿到回调 url 就可以为所欲为了。

当然 SFSafariViewController 也会可以获取到对应网页的一些Cookie信息 对应可以参考一下

在app内拿到用户安装app前信息的解决方案(支持iOS11)

SafariViewController: How to grab OAuth token from URL?

SafariAutoLoginTest

最终 : Demo

相关文章

网友评论

      本文标题:SFSafariViewController与原生交互的记录

      本文链接:https://www.haomeiwen.com/subject/gqlgoqtx.html