Emojis support in Apple push notification
Asked Answered
C

2

8

I am working on iPhone app named "INTERSTIZIO".In this I have implemented functionality like chat between users.In this user can send text,location and text with emojis symbol.If the app is not in open mode at receiver end then from backend push is generated and display to receiver.I am able to display message in push like "UserName : Hello..." but I also want to display emojis symbol, like "UserName : Hay :)" in push message so anyone have idea regarding how I can achieve this type of push message using emojis code(like for smile apple code is \u263a) of apple?

I have followed the solution given in this link : http://code.iamcal.com/php/emoji/ But it returns the same code that I have passed in function.Its working fine on web pages but not in push message.

Here I am attaching one screen shot of the push how it looks at my end.In it you can see that I have displayed smiley and lighting symbol but its displayed using HTML supported code like below code of PHP script:

$lightning = html_entity_decode('',ENT_NOQUOTES,'UTF-8');  
//add this to the 'alert' portion of your APNS payload:  
$message = "You just got the {$lightning}SHOCKER{$lightning}!";

But in my case I have displayed inbuilt emojis keyboard from apple and using below code I am able to get emojis code :

//store code of emojis at backend  
NSData *data = [txtspeech.text dataUsingEncoding:NSNonLossyASCIIStringEncoding];  
NSString *valueUnicode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

//Display emojis in mobile chat window
NSData *data = [objchat.strchat dataUsingEncoding:NSUTF8StringEncoding];  
NSString *valueEmoj = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];  
cell.txtchat.text=valueEmoj;

Using above code I am able to store and display emojis in chat window but if receiver user have closed app then in push message I am not able to display emojis symbol in push message.

Thanks

enter image description here

Candytuft answered 20/5, 2013 at 11:59 Comment(5)
Check the second answer to that question and see if it helps you.Cleopatra
The thread above implies this can work. I'll guess that the push string is not proper utf-8. In your app, grab the string, make a data object of it using UTF8 encoding, then log the bytes. My guess is the you will see the \ u ... chars not the utf8Absquatulate
@PartiallyFinite Yes, I have tried that script but in it emoji_softbank_to_unified() function returns as it is code of emojis and displaying it.Its not display the image of emojis.Candytuft
@PartiallyFinite Ok. Let me further try this script and implement that solution again.If I will face any issue then I will post error here.Thanks.Candytuft
@M007 I'm facing the same issue, did anything worked for you ?Floppy
P
5

you shouldn't need to mess about with html decoding. As you say the code point for smiling face is \u263A. In PHP you can represent that in a UTF8-encoded string as "\xE2\x98\xBA"

Lightning bolt (actually 'high voltage sign') is \u26A1 or "\xE2\x9A\xA1" in UTF-8.

Both these characters are present in some non-emoji fonts as regular Unicode symbols. You can see with:

<?php
header('Content-type: text/html; charset=utf-8');
echo "\xE2\x9A\xA1";
echo "\xE2\x98\xBA";

I don't know where you got &#57661; from, but that would be \ue13d which is in an empty private use Unicode range, and not an Emoji within the Unicode standard Check it here Possibly it's from some other Japanese mobile carrier standard, but for iOS you should use Unicode.

You can get my above encodings from this table or use this Emoji search tool.

As for Apple push. This note says you can send emoji as UTF-8 encoded strings, so a json object like {"alert":"\u26A1SHOCKER\u26A1"} sounds like it will work.

Ptolemaist answered 22/5, 2013 at 14:50 Comment(0)
K
1

for the googlers. json_encode() adds double \

$message = "\ue04a";
$body['aps'] = array(
                   'alert' => $message,
                   'sound' => 'default',
                   'type'  => $type,
                   'param' => $param
               );

$payload = json_encode($body);
$payload = str_replace("\", "\\", $payload);
Kutzer answered 4/2, 2016 at 10:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.