sistema poner para los emojis descargar como cambiar ios emoji

poner - ¿Hay alguna manera de saber si un Emoji es compatible con iOS?



emojis de ios 11 en android sin root (1)

Aclaración: un Emoji es simplemente un personaje en el espacio de caracteres Unicode, por lo que la solución actual funciona para todos los personajes, no solo para Emoji.

Sinopsis

Para saber si un carácter Unicode (incluido un Emoji) está disponible en un dispositivo o sistema operativo determinado, ejecute el método unicodeAvailable() continuación.

Funciona comparando una imagen de carácter dada con un carácter Unicode indefinido conocido U+1FFF .

unicodeAvailable (), una extensión de Character

private static let refUnicodeSize: CGFloat = 8 private static let refUnicodePng = Character("/u{1fff}").png(ofSize: Character.refUnicodeSize) func unicodeAvailable() -> Bool { if let refUnicodePng = Character.refUnicodePng, let myPng = self.png(ofSize: Character.refUnicodeSize) { return refUnicodePng != myPng } return false }

Discusión

  1. Todos los caracteres se representarán como un png del mismo tamaño (8) como se define una vez en

    static let refUnicodeSize: CGFloat = 8

  2. La imagen U+1FFF carácter indefinido se calcula una vez en

    static let refUnicodePng = Character("/u{1fff}").png(ofSize: Character.refUnicodeSize)

  3. Un método auxiliar crea opcionalmente un png a partir de un Character

    func png(ofSize fontSize: CGFloat) -> Data?

1. Ejemplo: Prueba contra 3 emoji.

let codes:[Character] = ["/u{2764}","/u{1f600}","/u{1F544}"] // ❤️, 😀, undefined for unicode in codes { print("/(unicode) : /(unicode.unicodeAvailable())") }

2. Ejemplo: Probar un rango de caracteres Unicode

func unicodeRange(from: Int, to: Int) { for unicodeNumeric in from...to { if let scalar = UnicodeScalar(unicodeNumeric) { let unicode = Character(scalar) let avail = unicode.unicodeAvailable() let hex = String(format: "0x%x", unicodeNumeric) print("/(unicode) /(hex) is /(avail ? "" : "not ")available") } } }

Función auxiliar: Character a png

func png(ofSize fontSize: CGFloat) -> Data? { let attributes = [NSAttributedStringKey.font: UIFont.systemFont(ofSize: fontSize)] let charStr = "/(self)" as NSString let size = charStr.size(withAttributes: attributes) UIGraphicsBeginImageContext(size) charStr.draw(at: CGPoint(x: 0,y :0), withAttributes: attributes) var png:Data? = nil if let charImage = UIGraphicsGetImageFromCurrentImageContext() { png = UIImagePNGRepresentation(charImage) } UIGraphicsEndImageContext() return png }

► Encuentre esta solución en GitHub y un artículo detallado sobre Recetas Swift .

Estoy creando una aplicación para iOS, y Emojis juega un papel importante en ella.

En iOS 10.2, se lanzaron nuevos emojis.

Estoy bastante seguro de que si alguien tiene iOS 8, por ejemplo, no podrían ver estos emojis. ¿Hay una manera de detectar esto? Estoy tratando de construir dinámicamente una lista de todos los Emojis que son compatibles con la versión de iOS del usuario, pero estoy teniendo un poco de problemas.