extension AppDelegate: UNUserNotificationCenterDelegate {
// Receive displayed notifications for iOS 10 devices.
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// Change this to your preferred presentation option
CustomerGlu.getInstance.cgUserNotificationCenter(center, willPresent: notification, withCompletionHandler: completionHandler)
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { //apn
let tokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
print("Device token: \(tokenString)")
CustomerGlu.getInstance.apnToken = tokenString
let userData = [String: AnyHashable]()
CustomerGlu.getInstance.updateProfile(userdata: userData) { success, _ in
Messaging.messaging().apnsToken = deviceToken
print("APNs token retrieved: \(deviceToken)")
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
CustomerGlu.getInstance.displayBackgroundNotification(remoteMessage: userInfo as? [String: AnyHashable] ?? ["glu_message_type": "glu"])
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
CustomerGlu.getInstance.cgapplication(application, didReceiveRemoteNotification: userInfo, backgroundAlpha: 0.5, fetchCompletionHandler: completionHandler)
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
// MARK: FCM Notification delegate
extension AppDelegate: MessagingDelegate {
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
print("Firebase registration token: \(String(describing: fcmToken))")
CustomerGlu.getInstance.fcmToken = fcmToken ?? ""
let userData = [String: AnyHashable]()
CustomerGlu.getInstance.updateProfile(userdata: userData) { success, _ in