Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

253
Views
Notificar al usuario del nuevo inicio de sesión con Firebase - Swift/Xcode

He buscado por todas partes y no puedo averiguar cómo notificar a un usuario cuando un nuevo dispositivo inicia sesión en su cuenta. Estoy usando la autenticación de Firebase. Me gustaría configurar algún tipo de sistema de notificación o correo electrónico que le diga al usuario que alguien ha iniciado sesión en su cuenta desde un dispositivo diferente para que pueda saberlo por razones de seguridad.

¿Ideas?

Además, ¿cómo podría monitorear la información sobre qué dispositivo(s) están registrados en una cuenta específica? Por ejemplo, tal vez el usuario tenga curiosidad sobre cuántos dispositivos ha iniciado sesión en su cuenta, qué tipo de dispositivo son, cuál es el nombre de esos dispositivos y dónde están ubicados (ejemplo: San Antonio, Texas).

¿Ideas?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

sí, puedes usar llavero para esta situación. Primero debe crear un ID único. Después de que pueda guardar en la base de datos uniqueId. Este valor cambiará si el usuario usa otro dispositivo. Estoy usando un marco de trabajo de terceros para los servicios de llavero. Puedes usar el marco. Es perfecto.

https://github.com/kishikawakatsumi/KeychainAccess

 final class DeviceManager { static let shared = DeviceManager() private init() { } var uniqueDeviceId: String { get { let keychain = Keychain(service: KeyManager.keychainServiceName).accessibility(.always) if let deviceId = keychain[KeyManager.keychainDeviceIdKey] { return deviceId } let vendorId = UIDevice.current.identifierForVendor!.uuidString keychain[KeyManager.keychainDeviceIdKey] = vendorId return vendorId } } }
over 4 years ago · Santiago Trujillo Report

0

Súper simple; tenga un campo en su documento de usuario que almacene un nombre de dispositivo junto con su estado.

Su aplicación observará este documento de usuarios y cuando algo cambie, todos los dispositivos de los usuarios serán notificados de ese cambio.

Déjame configurar esto; aquí hay una estructura básica de Firestore

 users uid_0 userName: "Jay" devices: device_0: offline device_1: offline

Cuando se inicie la aplicación, agregará un observador a este documento de usuario (usando el uid como documentId)

 func observeUser() { let usersCollection = self.db.collection("users") usersCollection.document("uid_0").addSnapshotListener { (documentSnapshot, err) in guard let document = documentSnapshot else { print("Error fetching document: \(err!)") return } let device = document.get("devices") as! [String: String] print(device) } }

Ahora, en el cierre de Firestore que se muestra arriba, si el dispositivo de un usuario cambia de estado, de fuera de línea a en línea, por ejemplo, envía todos los dispositivos a la consola. Tomará cualquier acción que sea necesaria cuando el dispositivo cambie de estado.

Tenga en cuenta que si se agrega un NUEVO dispositivo, ese evento también se activará, por lo que podría presentar un mensaje en la interfaz de usuario "¡Se agregó un nuevo dispositivo!"

Entonces, un código de prueba que alterna el estado del dispositivo_0 de fuera de línea a en línea. Tengo un clic de botón que hace self.status = !self.status y luego llama a la función toggleStatus

 var status = false func toggleStatus() { var isOnline = "" if self.status == false { isOnline = "online" } else { isOnline = "offline" } let userCollection = self.db.collection("users") let thisDevice = "device_0" let devicesDict = [ "devices": [thisDevice: isOnline] //sets device_0 to offline or online ] let document = usersCollection.document("uid_0").setData(devicesDict, merge: true) }

En pocas palabras, cuando un usuario se autentica con un dispositivo por primera vez, tal vez solicite un nombre de dispositivo, o cree uno a partir de la dirección mac del dispositivo o algo oculto. Ese nombre de dispositivo se almacena en el documento/dispositivos de los usuarios con su estado en línea.

El nombre del dispositivo también se almacenaría localmente, en los valores predeterminados del usuario, por ejemplo, por lo que se envía automáticamente a Firestore al iniciar sesión.

El resultado final aquí es que si los dispositivos de los usuarios cambian de estado; fuera de línea a en línea o viceversa, o se agrega o elimina cualquier dispositivo, todos los dispositivos reciben una notificación de ese evento.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!