gpt4 book ai didi

使用 x-callback-url 的 iOS Interapp 双向通信

转载 作者:行者123 更新时间:2023-11-28 07:51:43 27 4
gpt4 key购买 nike

我一直在关注this使用 x-callback-url 实现应用间双向通信的链接。所以我制作了两个不同的应用程序 - SourceAppTargetApp

SourceApp

URL 方案: enter image description here

打开TargetApp的实现如下:

@IBAction func btnOpenAppPressed(_ sender:UIButton){

let url = URL.init(string: "targetapp://x-callback-url/translate?x-success=sourceapp://x-callback-url/acceptTranslation&x-source=SourceApp&x-error=sourceapp://x-callback-url/translationError&word=Hello&language=Spanish")

if (UIApplication.shared.canOpenURL(url!)){

UIApplication.shared.open(url!, options: [:], completionHandler: nil)
}
}

从 TargetApp 接收响应的 AppDelegate 方法:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

print("Response From TargetApp==>\(url.absoluteString)")
return true
}

目标应用

URL 方案: enter image description here

AppDelegate 方法接收来自 SourceApp 的请求:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

print("Response From SourceApp==>\(url.absoluteString)")

return true
}

TargetApp 的 IBAction 将响应发送回 SourceApp:

@IBAction func btnBackToSourceAppPressed(_ sender:UIButton){

let url = URL.init(string: "sourceapp://x-callback-url/acceptTranslation?x-source=TargetApp&word=Hola")

if (UIApplication.shared.canOpenURL(url!)){

UIApplication.shared.open(url!, options: [:], completionHandler: nil)
}
}

现在的问题是,我可以从 SourceApp 打开 TargetApp,但无法从 TargetApp 返回到 SourceApp。我什至调查了this方法,但我发现它和我的一样。

我们将不胜感激。

最佳答案

经过 2 天的努力,我发现我没有在 plist 中使用 LSApplicationQueriesSchemes。我还发现,在 Objective-C 中,如果我跳过 LSApplicationQueriesSchemes,我可以轻松地在这两个应用程序之间进行通信。但是如果你使用 swift 你必须 LSApplicationQueriesSchemes 否则,你会得到

-canOpenURL: failed for URL: "targetapp://" - error: "This app is not allowed to query for scheme targetapp"

所以,我不得不使用

<key>LSApplicationQueriesSchemes</key>
<array>
<string>targetapp</string>
</array>

在 SourceApp 的 plist 和

<key>LSApplicationQueriesSchemes</key>
<array>
<string>sourceapp</string>
</array>

在 TargetApp 的 plist 中。

我做了 two demo apps这很容易演示使用 x-callback-url 的应用程序间双向通信。

关于使用 x-callback-url 的 iOS Interapp 双向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49485236/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com