diff options
Diffstat (limited to 'iosApp/iosApp')
-rw-r--r-- | iosApp/iosApp/AppDelegate.swift | 59 | ||||
-rw-r--r-- | iosApp/iosApp/Info.plist | 4 | ||||
-rw-r--r-- | iosApp/iosApp/Session/RootView.swift | 10 | ||||
-rw-r--r-- | iosApp/iosApp/iOSApp.swift | 1 | ||||
-rw-r--r-- | iosApp/iosApp/iosApp.entitlements | 8 |
5 files changed, 81 insertions, 1 deletions
diff --git a/iosApp/iosApp/AppDelegate.swift b/iosApp/iosApp/AppDelegate.swift new file mode 100644 index 0000000..ebe88df --- /dev/null +++ b/iosApp/iosApp/AppDelegate.swift @@ -0,0 +1,59 @@ +/** + * TrackerMap + * Copyright (C) 2021-2022 Iván Ávalos <avalos@disroot.org>, Henoch Ojeda <imhenoch@protonmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +import Foundation +import UIKit +import Firebase +import FirebaseMessaging + +class AppDelegate: NSObject, UIApplicationDelegate { + func applicationDidFinishLaunching(_ application: UIApplication) { + FirebaseApp.configure() + Messaging.messaging().delegate = self + + UNUserNotificationCenter.current().delegate = self + let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] + UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { _, _ in } + + application.registerForRemoteNotifications() + } + + func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) async -> UIBackgroundFetchResult { + print(userInfo) + return UIBackgroundFetchResult.newData + } +} + +extension AppDelegate: UNUserNotificationCenterDelegate { + func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification) async -> UNNotificationPresentationOptions { + let userInfo = notification.request.content.userInfo + print(userInfo) + return [.banner, .badge, .sound] + } + + func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse) async { + let userInfo = response.notification.request.content.userInfo + print(userInfo) + } +} + +extension AppDelegate: MessagingDelegate { + func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) { + print ("didReceiveRegistrationToken fcmToken:\(String(describing: fcmToken))") + UserDefaults.standard.set(fcmToken, forKey: "fcmtoken") + } +} diff --git a/iosApp/iosApp/Info.plist b/iosApp/iosApp/Info.plist index 237f735..bf9db74 100644 --- a/iosApp/iosApp/Info.plist +++ b/iosApp/iosApp/Info.plist @@ -4,6 +4,10 @@ <dict> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>UIBackgroundModes</key> + <array> + <string>remote-notification</string> + </array> <key>CFBundleDisplayName</key> <string>TrackerMap</string> <key>CFBundleExecutable</key> diff --git a/iosApp/iosApp/Session/RootView.swift b/iosApp/iosApp/Session/RootView.swift index 9f2e589..bc8a7d1 100644 --- a/iosApp/iosApp/Session/RootView.swift +++ b/iosApp/iosApp/Session/RootView.swift @@ -46,6 +46,12 @@ struct LoginContentView: View { let onLogin: (SessionBody) -> Void + func getFcmToken() -> String? { + let token = UserDefaults.standard.string(forKey: "fcmtoken") + print("FCM token is \(String(describing: token))") + return token + } + var body: some View { VStack { Spacer() @@ -60,7 +66,7 @@ struct LoginContentView: View { self.onLogin(SessionBody(url: server, email: username, password: password, - fcmToken: nil)) + fcmToken: getFcmToken())) }) { Text("login") .font(.system(size: 18)) @@ -74,6 +80,8 @@ struct LoginContentView: View { } } +// Source: https://github.com/niochat/nio + struct LoginTitleView: View { var body: some View { return VStack { diff --git a/iosApp/iosApp/iOSApp.swift b/iosApp/iosApp/iOSApp.swift index 338c06b..291f2cd 100644 --- a/iosApp/iosApp/iOSApp.swift +++ b/iosApp/iosApp/iOSApp.swift @@ -21,6 +21,7 @@ import shared @main struct iOSApp: App { + @UIApplicationDelegateAdaptor var delegate: AppDelegate init() { /* Dependency injections */ diff --git a/iosApp/iosApp/iosApp.entitlements b/iosApp/iosApp/iosApp.entitlements new file mode 100644 index 0000000..903def2 --- /dev/null +++ b/iosApp/iosApp/iosApp.entitlements @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>aps-environment</key> + <string>development</string> +</dict> +</plist> |