Ios 当应用程序被终止或处于后台时显示本地通知

Ios 当应用程序被终止或处于后台时显示本地通知,ios,swift,xcode,notifications,Ios,Swift,Xcode,Notifications,我有一个iOS应用程序形式的HQ应答机器人。基本上,我已经完成了整个机器人,它会在HQ琐事websocket打开后运行,但是我对最后一步有问题,那就是以推送通知的形式将机器人的最佳答案发送给用户,因为他们将在游戏直播和机器人运行时使用HQ应用程序。在我的viewDidLoad中,我有以下代码: override func viewDidLoad() { super.viewDidLoad() getSocketURL() let notificationCenter

我有一个iOS应用程序形式的HQ应答机器人。基本上,我已经完成了整个机器人,它会在HQ琐事websocket打开后运行,但是我对最后一步有问题,那就是以推送通知的形式将机器人的最佳答案发送给用户,因为他们将在游戏直播和机器人运行时使用HQ应用程序。在我的viewDidLoad中,我有以下代码:

override func viewDidLoad() {
    super.viewDidLoad()

    getSocketURL()

    let notificationCenter = NotificationCenter.default
    notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: Notification.Name.UIApplicationWillResignActive, object: nil)

}
getSocketURL()检查游戏是否处于活动状态,以及是否运行bot,但我希望在用户将应用程序杀死或处于后台时,该程序能够运行

最后,当bot找到正确答案时,应在本地发送通知:

private func getMatches()
{
    let options = [answer1, answer2, answer3]
    AnswerController.answer(for: question, answers: options) { answer in

        print("Predicted correct answer: \(answer.correctAnswer)")
        print("-----")

        self.bestAnswer = answer.correctAnswer

        self.sendNotification(question: self.question, answer: "Best Answer: \(self.bestAnswer)") // Send the user a notification

        self.updateLabels()
    }
}

总而言之,我正在寻找一种方法,让机器人在游戏进行时运行,而不让用户打开应用程序并将其置于前台,因为它们将位于HQ应用程序中。是否有任何方法可以通过本地通知实现这一点?如果没有,我需要采取什么步骤来使用Firebase之类的东西来实现这一点,也就是说,如果我仍然希望bot在用户的手机上本地运行

如果用户已杀死该应用程序,则该应用程序已死亡,无法执行任何代码。如果用户已将你的应用移动到后台,那么它将被挂起,并且只能响应特定事件;它无法监视websocket。听起来你需要从服务器上推送通知,而不是本地通知。你是否需要通过后台模式这样做?当游戏的插座打开并且不会耗尽电池电量时,它只会持续几分钟。无论如何,我不打算发布此应用程序,它主要是为了测试和我自己。当你的应用程序进入后台时,你可以调用
beginBackgroundTaskWithExpirationHandler
,以获得最多3分钟的后台执行时间。