ios - 是否可以从后台模式或应用程序被终止时打开 ViewController?

标签 ios swift voip pushkit

我正在尝试在收到推送通知时打开ViewController。我就是这样做的

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType) {
    guard let aps = payload.dictionaryPayload[AnyHashable("aps")] as? NSDictionary else {
        return
    }
    startCustomCallController(apnData: app)
}

func startCustomCallController(apnData: NSDictionary) {
    let storyBord = UIStoryboard(name: "PrivateUi", bundle: nil)
    guard let controller = storyBord.instantiateViewController(withIdentifier: "NewIncomingCallViewController") as? NewIncomingCallViewController else{
        print("Error instantiating view controller")
        return
    }
    controller.apnData = apnData
    guard let appdelegate = UIApplication.shared.delegate as? AppDelegate else {
        print("appdelegate is missing")
        return
    }
    UIView.transition(with: appdelegate.window!, duration: 0.5, options: .transitionCrossDissolve, animations: {
        appdelegate.window!.rootViewController = controller
    }, completion: nil)
}

当应用程序打开(在前台)时它可以工作,但当应用程序在后台或被杀死时则不能工作。 是不可能还是我需要做一些改变?

最佳答案

我认为不可能从后台模型启动ViewController。如果您想打开viewcontroller来调用相关任务,请使用 callkit

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, forType type: PKPushType) {
    // report new incoming call
}```

关于ios - 是否可以从后台模式或应用程序被终止时打开 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59662564/

相关文章:

ios - 将 Javascript 注入(inject) Webview - Swift

IOS7 状态栏在选定 Controller 上隐藏/显示

c++ - linux下的firefox插件开发

android - 将应用程序构建为 Web 应用程序以实现更轻松的多平台兼容性是个好主意吗?

ios - 在 UITableView 中过滤 NSMutableDictionary 数据

ios - 如果我们在后台队列中调用 main.async 代码什么时候执行?

ios - Swift:保存(覆盖)和加载 CoreData

ios - 阻止 UITextField 编辑但检测点击

c++ - 回声抑制库?

android - 如何在android中实现voip