2022-01-13

iOS开发:URLSch...


关于iOS开发URLSchemes和App跳转

我们都知道iOS每个App都是沙箱机制,App之前不共享磁盘空间,所以一些例如跳转到第三方App登陆以及跳转回来的逻辑就是通过URLSchemes完成的
最近碰到用支付宝登陆,便记录下。

首先我们到target的Info里配置我们App的URLSchemes,他提供了跳转回我们App的URL逻辑

比如我们在Safari中输入刚刚配置的PinkBook://
就可以跳转打开我们的App

由于是接入支付宝的一件登陆SDK遇到的,所以这个逻辑在打开App跳转到支付宝以及支付宝验证后跳转回来时没有问题的。
但是你可能想看一些log日志,比如这里闭包回调的result,直接print看都不到,是因为App已经从后台切出去再切回来了(如果遇到被系统杀死或者App睡死了的情况下)。

所以应该通过SceneDelegate的某个生命周期回调来看

1
2
3
4
5
6
7
8
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else { return }
if url.host == "safepay" {
AlipaySDK.defaultService()?.processAuth_V2Result(url) { result in
// ...
}
}
}