¿Cómo enviar notifications de posts en iOS?

Estoy buscando durante una hora una forma de hacerlo (sin Parse porque está cayendo este mes).

Estoy tratando de hacer en la aplicación que un usuario puede enviar un post de notificación push a otro usuario específico.

¿Cuáles son las opciones para implementar eso? (Por favor sea específico)

Gracias.

Lo que está buscando no suele ser recomendable, ya que puede convertirse fácilmente en un problema. Técnicamente, los usuarios no deberían poder enviar notifications push directas a otros usuarios. Todas las notifications deben manejarse a través de un sistema central que no sería accesible para sus usuarios individuales. Sin embargo, si sientes que aún quieres hacer que funcione, sigue leyendo.

Tengo un mecanismo como este en una de mis aplicaciones, con FCM. Esta es la function (con algunas modificaciones para extraer mi información específica) que uso para enviar posts de un usuario a otro:

func push(message: String, toUser: String) { var token: String? for person in self.users { if toUser == person.username && person.firebaseToken != nil { token = person.firebaseToken } } if token != nil { var request = URLRequest(url: URL(string: "https://fcm.googleapis.com/fcm/send")!) request.httpMethod = "POST" request.setValue("application/json", forHTTPHeaderField: "Content-Type") request.setValue("key=[your FCM Server Key]", forHTTPHeaderField: "Authorization") let json = [ "to" : token!, "priority" : "high", "notification" : [ "body" : message ] ] as [String : Any] do { let jsonData = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted) request.httpBody = jsonData let task = URLSession.shanetworking.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { print("Error=\(error)") return } if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors print("Status Code should be 200, but is \(httpStatus.statusCode)") print("Response = \(response)") } let responseString = String(data: data, encoding: .utf8) print("responseString = \(responseString)") } task.resume() } catch { print(error) } } } 

Mantengo este método en mi appDelegate y lo llamo siempre que sea necesario. Básicamente, cada usuario de mi aplicación tiene un token de postría Firebase asignado a ellos, y es solo otra propiedad de cada usuario. Puede get el token de FCM de un usuario con esta llamada:

 let token = FIRInstanceID.instanceID().token() 

Por lo general, el token se puede recuperar y save cuando un usuario crea una count por primera vez. El token seguirá siendo el mismo siempre que el usuario utilice el mismo dispositivo.

Una vez más, esto puede ser muy peligroso si se implementa sin las medidas de security adecuadas para evitar que sus usuarios tengan el control total sobre el envío de notifications push.

No estoy seguro de esto. Aunque el código de estado es 200, no puedo ver ninguna notificación.

Este es el valor de retorno.

 { \"multicast_id\":6666941437973455953, \"success\":1, \"failure\":0, \"canonical_ids\":0, \"results\":[{\"message_id\":\"0:1490256129594240%03b6b50f03b6b50f\"}] }