【发布时间】:2021-11-22 20:55:36
【问题描述】:
这有点难,如果标题不正确,我深表歉意。我不知道如何用词来表达标题。
基本上我在 iOS 中使用 Jitsi SDK,我们将其设置为使用 JWT 进行身份验证和识别主机/访客。当应用程序使用 URL 启动时,我的问题就出现了。方法...
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {...
当它启动时,它会将房间号作为 URL 的一部分。这一切都说得通。我的问题是我需要调用 API 来“签入”用户并检索在服务器上生成的 jwt。上面的函数有一个关于应用程序是否应该启动以及所有爵士乐的返回,在 Jitsi 文档中它显示返回应该是......
return JitsiMeet.sharedInstance().application(app, open: finalURL, options: options)
但是我不希望它这样做。我需要做一个API调用,我的api调用的回调会有我需要的jwt,然后我希望它可以正常打开应用程序,这样我就可以自己处理加入会议了。
我想我的主要问题是.. 如果我进行一个 API 调用,该调用具有一个回调,该回调将使用所需的参数启动应用程序,但我只是从该函数返回 false,它会正常工作吗?
我知道这可能听起来令人困惑,所以这里是我在想什么的快速 sn-p...
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
guard NSURLComponents(url: url resolvingAgainstBaseURL: true) != nil else {
return false
}
let room = url.lastPathComponent
if let finalURL = URL(string: 'myserverhere/' + room) {
callCheckinAPI(room: room) { (res) in
if(res.success) {
DispatchQueue.main.async {
self.launchMainApp(room)
}
} else {
//not sure how to return false from here
}
}
return false
}
return false
}
我觉得这将是一个问题,因为该函数会在 Api 调用完成之前得到它的返回,因为返回不能等待 api 调用完成,但我不确定我该怎么做处理这种情况。这是当使用特定 URL 启动应用程序时在 AppDelegate 中调用的方法,当用户单击链接加入会议时会发生这种情况。那么,如果应用程序使用特定 URL 启动,有没有办法进行 API 调用,然后相应地处理它?我是否走在正确的道路上,从理论上讲,上述内容应该有效吗?我有点迷茫,需要比我更擅长 swift 的人的建议。
感谢您的通读,如果标题不正确,我再次道歉。很难解释,我不确定标题应该是什么。
【问题讨论】:
标签: ios swift appdelegate