У меня возникли серьезные проблемы с служебными расширениями Swift : я добавил Notification Service Extension
в свое приложение. Как только приходит уведомление, вызывается функция didReceive расширения.
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
// my code
}
Я хочу передать некоторые данные, такие как переменная String, в мои основные приложения AppDelegate , но до сих пор это не работает.
Сохранение данных в UserDefaults при вызове didReceive выше работает, но чтение этих данных в AppDelegate в каждом случае возвращает ноль !
let defaults = UserDefaults(suiteName: "group.mycompany.myapp")
defaults?.set("This is a String", forKey: "myVariable")
Также реализует статическую функцию
static func shared() -> AppDelegate {
return UIApplication.shared.delegate as! AppDelegate
}
в приложении делегат и вызов
AppDelegate.shared().myVariable = "This is a String";
в классе расширения не является рабочим решением, потому что AppDelegate , похоже, не подходит для расширения: мое приложение падает!
сообщение о сбое
Примечание : я уже установил флажки TargetMembership и установил для require-only-app-extension-safe-api
значение , не .
Я понятия не имею, как заставить это работать, поэтому любая помощь будет очень признательна.