У меня есть работающее приложение с уведомлениями, которые хорошо отображаются.Теперь я хотел бы обработать какое-либо событие в уведомлении, например, когда пользователь нажимает на баннер.
Моя цель развертывания iOS - 11,0 и то же самое для моей цели развертывания.
Я реализовал все в своемФайл AppDelegate.swift:
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, RCTBridgeDelegate {
var window: UIWindow?
var didFinishLaunching: Bool = false
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
let bridge = RCTBridge(delegate: self, launchOptions: launchOptions)
let rootView = RCTRootView(bridge: bridge, moduleName: "root", initialProperties: nil)
rootView?.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1)
self.window = UIWindow(frame: UIScreen.main.bounds)
let rootViewController = UIViewController()
rootViewController.view = rootView
self.window?.rootViewController = rootViewController
self.window?.makeKeyAndVisible()
didFinishLaunching = true
Fabric.with([Crashlytics.self])
FirebaseApp.configure()
// This block is necessary to ask user authorization to receive notification
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options: [.badge, .sound, .alert], completionHandler: {(grant, error) in
if error == nil {
if grant {
print("### permission granted")
application.registerForRemoteNotifications()
} else {
//User didn't grant permission
}
} else {
print("error: ",error)
}
})
} else {
// Fallback on earlier versions
let notificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(notificationSettings)
}
self.firstLaunchAction()
self.initTracker()
RNSplashScreen.showSplash("LaunchScreen", inRootView: rootViewController.view)
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let tokenParts = deviceToken.map { data -> String in
return String(format: "%02.2hhx", data)
}
let token = tokenParts.joined()
print("### Device Token: \(token)")
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
print("### Failed to register for remote notifications with error: \(error)")
}
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
if response.actionIdentifier == "like" {
print("### Handle like action identifier")
} else if response.actionIdentifier == "save" {
print("### Handle save action identifier")
} else {
print("### No custom action identifiers chosen")
}
// Make sure completionHandler method is at the bottom of this func
completionHandler()
}
Как вы можете видеть, я использую Firebase для отправки удаленных уведомлений, поэтому у меня есть полезная нагрузка в json, например:
return {
notification: {
title,
body
},
data: {
title,
body,
...data
},
android: {
ttl: 3600 * 1000,
notification: {
icon: 'stock_ticker_update',
color: '#002559'
}
},
apns: {
payload: {
aps: {
alert: {
title: 'NITL ACUMEN BI RFS CODA Dev Offshore',
body: 'Send a Message - PN testing group'
},
sound: 'default'
}
}
},
condition
};
Большая часть моего кодаскопировано с сайта.Но на самом деле мое поведение таково, что когда я нажимаю на баннер уведомления, ничего не происходит ...
Я вижу баннер уведомления, поэтому я думаю, что с моей регистрацией APN проблем нет.Я не знаю, почему didReceive не срабатывает при событии щелчка.
Я что-то пропустил в своей реализации?Полезная нагрузка для моего уведомления неверна?
Может ли кто-нибудь помочь мне выяснить, где моя ошибка?Я прочитал бесконечное количество уроков без результатов.Некоторая помощь будет очень признательна, спасибо :)