I\'m building an iOS App, and Emojis play a big part in it.
In iOS 10.2, new emojis were released.
I\'m pretty sure that if someone has iOS 8, for example, t
Just for future reference, after discovering my app had 13.2 emojis not supported in 12.x versions, I used the answer from here: How can I determine if a specific emoji character can be rendered by an iOS device? which worked really well for me.
Clarification: an Emoji is merely a character in the Unicode Character space, so the present solution works for all characters, not just Emoji.
To know if a Unicode character (including an Emoji) is available on a given device or OS, run the unicodeAvailable() method below.
It works by comparing a given character image against a known undefined Unicode character U+1FFF.
Character extensionprivate 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
}
All characters will be rendered as a png at the same size (8) as defined once in
static let refUnicodeSize: CGFloat = 8
The undefined character U+1FFF image is calculated once in
static let refUnicodePng = Character("\u{1fff}").png(ofSize: Character.refUnicodeSize)
A helper method optionally creates a png from a Character
func png(ofSize fontSize: CGFloat) -> Data?
let codes:[Character] = ["\u{2764}","\u{1f600}","\u{1F544}"] // ❤️,