Emojis support in Apple push notification

2019-03-19 16:04发布

问题:

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

回答1:

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.



回答2:

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);