我正在使用带有颤振的 onesignal,并且我实现了 onesignal 通知服务。现在我想在不打开应用程序的情况下处理通知操作按钮,所以我在 notificationService
didReceive
函数中添加了这些行。
let notificationOpenedBlock: OSHandleNotificationActionBlock = { result in
if let actionID = result?.action.actionID {
print("actionID =", actionID)
}
}
但我收到此错误。
Cannot find type 'OSHandleNotificationActionBlock' in scope
我不确定我做错了什么,我不应该在这个类中使用这段代码吗?还是我错过了导入包之类的东西?
答案 0 :(得分:0)
iOS 要求在 didFinishLaunchingWithOptions 中设置 iOS API 回调。否则,如果您点击导致应用冷启动的通知,SDK 将错过该事件。我不确定 Capacitor 如何与此挂钩,但由于它是 iOS API 限制,因此您需要以相同的方式处理此问题
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"])"
}
}
}
....
//START OneSignal initialization code
let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false]
// Replace 'YOUR_APP_ID' with your OneSignal App ID.
OneSignal.initWithLaunchOptions(
launchOptions,
appId: "xxxxxxx",
handleNotificationAction: notificationOpenedBlock,
settings: onesignalInitSettings
)
....
return true
}