diff --git a/HabitRPG/AppDelegate+Notifications.swift b/HabitRPG/AppDelegate+Notifications.swift index c3a9fba9..604d2ae7 100644 --- a/HabitRPG/AppDelegate+Notifications.swift +++ b/HabitRPG/AppDelegate+Notifications.swift @@ -9,6 +9,7 @@ import UIKit import UserNotifications import Habitica_Models +import FirebaseMessaging extension HabiticaAppDelegate: UNUserNotificationCenterDelegate { @@ -47,6 +48,8 @@ extension HabiticaAppDelegate: UNUserNotificationCenterDelegate { } func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { + let userInfo = response.notification.request.content.userInfo + Messaging.messaging().appDidReceiveMessage(userInfo) switch response.actionIdentifier { case "acceptAction": acceptQuestInvitation { _ in @@ -100,6 +103,8 @@ extension HabiticaAppDelegate: UNUserNotificationCenterDelegate { func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { + let userInfo = notification.request.content.userInfo + Messaging.messaging().appDidReceiveMessage(userInfo) if let taskID = notification.request.content.userInfo["taskID"] as? String { let alert = HabiticaAlertController(title: notification.request.content.title, message: notification.request.content.body) alert.addAction(title: L10n.complete, isMainAction: true) {[weak self] _ in @@ -112,10 +117,12 @@ extension HabiticaAppDelegate: UNUserNotificationCenterDelegate { } func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { + Messaging.messaging().apnsToken = deviceToken saveDeviceToken(deviceToken) } func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { + Messaging.messaging().appDidReceiveMessage(userInfo) displayNotificationInApp(title: userInfo["title"] as? String ?? "", text: userInfo["body"] as? String ?? "") completionHandler(.newData) } diff --git a/HabitRPG/AppDelegate.swift b/HabitRPG/AppDelegate.swift index 7f7dbe4b..38db7f88 100644 --- a/HabitRPG/AppDelegate.swift +++ b/HabitRPG/AppDelegate.swift @@ -126,7 +126,9 @@ class HabiticaAppDelegate: UIResponder, MessagingDelegate, UIApplicationDelegate } func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) { - + if let token = fcmToken { + print("Received FCM Token: \(token)") + } } func saveDeviceToken(_ deviceToken: Data) { diff --git a/HabitRPG/Extensions/Down-Extensions.swift b/HabitRPG/Extensions/Down-Extensions.swift index 5bb88747..978e721d 100644 --- a/HabitRPG/Extensions/Down-Extensions.swift +++ b/HabitRPG/Extensions/Down-Extensions.swift @@ -83,8 +83,8 @@ extension Down { } applyCustomEmoji(string, size: baseSize) replaceIn(string: string, characters: "
", with: "\n") - replaceIn(string: string, characters: " ", with: " ") - replaceIn(string: string, characters: " ", with: " ") + replaceIn(string: string, characters: " ", with: " ") + replaceIn(string: string, characters: " ", with: " ") replaceIn(string: string, characters: " ", with: " ") var range = string.mutableString.range(of: "") diff --git a/HabitRPG/Habitica-Info.plist b/HabitRPG/Habitica-Info.plist index 1f355953..ffbcd253 100644 --- a/HabitRPG/Habitica-Info.plist +++ b/HabitRPG/Habitica-Info.plist @@ -44,6 +44,8 @@ ${CUSTOM_DOMAIN} DisableSSL ${DISABLE_SSL} + FirebaseAppDelegateProxyEnabled + ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/HabitRPG/TableViewDataSources/EquipmentViewDataSource.swift b/HabitRPG/TableViewDataSources/EquipmentViewDataSource.swift index d4881dee..ea17c94d 100644 --- a/HabitRPG/TableViewDataSources/EquipmentViewDataSource.swift +++ b/HabitRPG/TableViewDataSources/EquipmentViewDataSource.swift @@ -33,9 +33,9 @@ class EquipmentViewDataSource: BaseReactiveTableViewDataSource { var predicateString = "" for (index, word) in search.split(separator: " ").enumerated() { if index != 0 { - predicateString.append(" || ") + predicateString.append(" && ") } - predicateString.append("text CONTAINS[cd] \"\(word)\" || notes CONTAINS[cd] \"\(word)\"") + predicateString.append("(text CONTAINS[cd] \"\(word)\" || notes CONTAINS[cd] \"\(word)\")") } predicate = NSPredicate(format: "key IN %@ && type == %@ && (\(predicateString))", keys, gearType)