【发布时间】:2020-06-13 23:27:20
【问题描述】:
我正在使用 Swift 开发 Ionic/Capacitor 原生插件
我正在尝试集成 OneSignal 推送通知服务,如果应用程序在前台并且用户单击通知,我的下面的代码可以正常工作,但是如果应用程序从单击通知开始,我的事件不会触发,我想这是因为 AppDelegate.swift 在 Capacitor/Ionic 之前加载,当我的 NotificationCenter.default.post 被触发时,数据不会到达我的插件。
我想我想知道 Swift 中是否有任何方法可以存储此帖子数据,直到应用程序的所有部分都已加载和初始化,即电容器/离子网络视图
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 ")
});
【问题讨论】:
标签: ios swift swift3 swift4 swift5