Есть ли способ получить уведомление pu sh, когда приложение на переднем плане на iOS Swift 5? - PullRequest
0 голосов
/ 10 января 2020

Я хочу создать приложение для управления посещаемостью для iOS. В приложении будет кнопка «Пуск», а затем, если нажать, приложение получит уведомление о баннере.

Проблема в том, что я не могу получить уведомление о баннере, пока приложение находится на переднем плане. Я покажу свой код ниже. Если я хочу получить уведомление, я должен вернуться на главный экран или запустить другие приложения. В моем приложении кнопка Set Notification позволяет получать уведомления, а кнопка Start предназначена для установки уведомлений. Я получил бы уведомление немедленно, но в этот момент я должен go вернуться домой, поэтому я установил время timeInterval: 5.

ContentView.swift

import SwiftUI
import Foundation
import UserNotifications

struct ContentView: View {
    var body: some View {
        VStack {
            Button(action: { self.setNotification() }) {
                Text("Set Notification")
            }.padding()

            //added here
            Button(action: { self.btnSend() }) {
                Text("Start")
            }.padding()
        }
    }

    func setNotification() -> Void {
     UNUserNotificationCenter.current().requestAuthorization(
                       options: [.alert,.sound,.badge], completionHandler: {didAllow,Error in
                       print(didAllow) //
                    })
    }

    func btnSend() {
        print("btnSend")

        let content = UNMutableNotificationContent()
        content.title = NSString.localizedUserNotificationString(forKey: "Hello!", arguments: nil)
        content.body = NSString.localizedUserNotificationString(forKey: "Good morning hehe", arguments: nil)
        content.sound = UNNotificationSound.default

        // Deliver the notification in five seconds.
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
        let request = UNNotificationRequest(identifier: "FiveSecond",
                                            content: content, trigger: trigger) // Schedule the notification.
        let center = UNUserNotificationCenter.current()
        center.add(request) { (error : Error?) in
             if let theError = error {
                 // Handle any errors
             }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

У кого-нибудь есть хорошие решения?

1 Ответ

0 голосов
/ 10 января 2020

Баннер уведомлений не показывает, находится ли приложение на переднем плане, вам нужно захватить уведомление в AppDelegate, создать свой собственный пользовательский вид и обработать его оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...