iOS - быстрая передача данных из расширения в основное приложение - PullRequest
0 голосов
/ 10 мая 2019

У меня возникли серьезные проблемы с служебными расширениями 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 значение , не .

Я понятия не имею, как заставить это работать, поэтому любая помощь будет очень признательна.

...