aboutsummaryrefslogtreecommitdiff
path: root/iosApp/iosApp
diff options
context:
space:
mode:
Diffstat (limited to 'iosApp/iosApp')
-rw-r--r--iosApp/iosApp/AppDelegate.swift59
-rw-r--r--iosApp/iosApp/Info.plist4
-rw-r--r--iosApp/iosApp/Session/RootView.swift10
-rw-r--r--iosApp/iosApp/iOSApp.swift1
-rw-r--r--iosApp/iosApp/iosApp.entitlements8
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>