Я работаю над собственным плагином Ionic / Capacitor в Swift
Я пытаюсь интегрировать службу уведомлений OneSignal pu sh, мой код ниже работает просто отлично, если приложение находится на переднем плане, и пользователь нажимает однако уведомление, если приложение запускается нажатием на уведомление, что мои события не запускаются, я полагаю, что это происходит потому, что AppDelegate.swift
загружается до Capacitor / Ioni c, а когда мой NotificationCenter.default.post
запускается, данные не доходят до моего плагина.
Наверное, я хочу знать, есть ли какой-нибудь способ в Swift сохранить эти данные поста, пока все части приложения не загрузятся и не будут инициализированы, например, веб-просмотр Capacitor / Ionics
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let notificationOpenedBlock: OSHandleNotificationActionBlock = { result in
// This block gets called when the user reacts to a notification received
let payload: OSNotificationPayload = result!.notification.payload
var fullMessage = payload.body
let nc = NotificationCenter.default
nc.post(name: Notification.Name("TestingEvents"), object: nil)
if payload.additionalData != nil {
if payload.title != nil {
let messageTitle = payload.title
print("Message Title = \(messageTitle!)")
}
let additionalData = payload.additionalData
if additionalData?["actionSelected"] != nil {
fullMessage = fullMessage! + "\nPressed ButtonID: \(additionalData!["actionSelected"])"
}
}
}
return true
}
MyPlugin.swift
public override func load() {
let nc = NotificationCenter.default
nc.addObserver(self, selector: #selector(handleSignal), name: Notification.Name("TestingEvents"), object: nil)
}
@objc func handleSignal() {
self.bridge.triggerWindowJSEvent(eventName: "myCustomEvent")
self.notifyListeners("myPluginEvent", data: [:])
}
и мой app.component.ts
window.addEventListener('myCustomEvent', () => {
alert("myCustomEvent ")
});
Plugins.myPlugin.addListener("myPluginEvent", () => {
alert("myPluginEvent ")
});