iOS

iOS - URL Scheme

2021-06-17  本文已影响0人  ienos

一、关于 URL 在 iOS 中的结构

[Scheme]://[Host]/[Path]?[Query]

例如: URLDemoApp://x-callback-url/gohome?x-success=otherapp://

>> 如何拆分 url.query 中的所有参数

  // 遍历所有参数
  for parameter in url.query?.components(separatedBy: "&") ?? [] {

    let pairComponents = parameter.components(separatedBy: "=")
    // key
    let key = pairComponents.first?.removingPercentEncoding
    // value
    let value = pairComponents.last?.removingPercentEncoding

  }

二、A 如何跳转 XCallbackURL

利用 URL Scheme 协议,定义应用之间进行跳转 Scheme 就是 URL 最初的位置 [Scheme]://[Host]/[Path]?[Query]

在 iOS 系统中,可以通过 URL 的 Scheme 找到对应的应用,例如标识 XCallbackURL 的 Scheme 为 xcallback

>> 如何设置 XCallbackURL 对应的 Scheme(一对多,可以添加多个)

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.agiletortoise.xcallback</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>xcallback</string>
            </array>
        </dict>
    </array>

设置完 XCallbackURL 对应的 URL Scheme,之后,可以在 A 中添加跳转代码,然后跳转到 XCallbackURL

>> 在 A 项目中添加跳转代码

    // canOpenURL 需要在 info.plist 中添加白名单,才会返回 true  
    /* info.plist -> Source Code
          <key>LSApplicationQueriesSchemes</key>
          <array>
                <string>weixin</string>
          </array>
    */
        // url: xcallback://
    if([[UIApplication sharedApplication] canOpenURL:url]) { 
        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
    } else {
        NSLog(@"Unable to open url");
    }

三、A 跳转到 B,B 的处理逻辑

// B 的 AppDelegate

// iOS 9 之后废弃
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    // sourceApplication 传递的是 app id 
    // B 的处理逻辑
}

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    // B 的处理逻辑
}

四、A 跳转到 B,B 处理完逻辑后,跳转 A

使用 x-callback-url 规范,规定 URL 结构,然后进行在 B 进行对应的代码处理

x-callback-url 定义的格式如下

关于 x-callback parameters

>> 参考资料

上一篇下一篇

猜你喜欢

热点阅读