快速按钮套件 - >打开呼叫屏幕而不打开总应用程序



我的应用程序有一些问题,我只想在获得pushkit VOIP呼叫时打开呼叫屏幕。但问题是,应用程序再次打开(当被杀死时(,所以很多请求都被发送到了服务器,我只想打开callscreen,然后可能会在调用后退出应用程序。

我现在将全面解释这个问题:

首先,我用这个类替换应用程序内的委托(这个类具有与启动屏幕相同的UI(

initiateFirstScreen("SplashScreen", storyboardName : "sheet")

在这个班级里我必须检查令牌、用户信息,连接到信号服务器,大约需要5-8秒,当所有加载后,我调用此函数导航到主屏幕:

func checkLogin() {
if let oauth = AppDelegate.shared.authState, oauth.isAuthorized{
initiateFirstScreen("HomeVC", storyboardName : "main")
}else{
initiateFirstScreen("LoginVC", storyboardName : "main")
}
}
func initiateFirstScreen(_ vcName: String, storyboardName : String) {
guard let window = AppDelegate.shared.window else{
AlertUtils.alertMessageWithOkAction(vc: self, mes: Language.get("Something went wrong")){b in
exit(0)
}
return
}
let storyBoard: UIStoryboard = UIStoryboard(name: storyboardName, bundle: nil)
let vc = storyBoard.instantiateViewController(withIdentifier: vcName)
window.rootViewController = vc
window.makeKeyAndVisible()
}

在上面的代码中,im使用window.rootViewController=vc在没有任何动画的情况下卸载HomeScreen。

问题是:由于在SplashScreen中加载时间长,当我得到pushKit时->显示Callkit屏幕,用户可能需要3-4秒才能回答(当应用程序被杀死/刷掉时(

->didFinishLaunchingWithOptions称为

->调用了SplashScreen,并且当用户正在应答呼叫时;检查令牌,用户信息,连接到信号器";已加载

->因此,下面的函数被称为:

window.rootViewController = vc
window.makeKeyAndVisible()

->我的电话屏幕现在很清楚了,这就是问题所在。

所以我想解决这个问题,很抱歉我的愚蠢问题,但这让我浪费了3天时间,但无法解决这个问题:(

您可以使用代理

func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession)

当您接听电话时,此代表会接到电话。所以直接导航到呼叫屏幕即可。并添加一个标志,例如isCall=true,并阻止用户导航到主屏幕这次

最新更新