2013-05-20 74 views
8

我正在開發名爲「INTERSTIZIO」的iPhone應用程序。在此我已實現了用戶之間聊天功能。此用戶可以發送帶有emojis符號的文本,位置和文本。如果該應用程序不是在接收端的開放模式,然後從後端推動生成並顯示給receiver.I能夠顯示像「用戶名:你好...」推送消息,但我也想顯示emojis符號,如「用戶名:乾草:) 「在推送消息中,所以任何人都有關於如何使用emojis代碼實現這種類型的推送消息的想法(比如蘋果的微笑蘋果代碼是\ u263a)?Emojis在Apple推送通知中的支持

我按照此鏈接給出的解決方案:http://code.iamcal.com/php/emoji/ 但它返回了我在function.Its中傳遞的相同的代碼,它在網頁上正常工作,但在推送消息中工作正常。

這裏我附上推它的外觀在我end.In的一個屏幕截圖它,你可以看到,我已顯示笑臉和燈光符號,但其顯示在使用HTML支持像下面PHP腳本的代碼代碼:

$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}!"; 

但在我的情況下,我已經從蘋果顯示內置表情符號鍵盤,並使用下面的代碼,我能得到表情符號,代碼:

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

使用上面的代碼中,我能夠存儲並在聊天窗口中顯示錶情符號但如果接收方用戶已關閉應用程序,然後在膿液h消息我無法在推送消息中顯示emojis符號。

感謝

enter image description here

+1

@PartiallyFinite哦,是的我有同樣的問題。 – M007

+0

檢查該問題的第二個答案,看看它是否對您有所幫助。 – Greg

+0

上面的線程意味着這可以工作。我會猜測推送字符串是不正確的utf-8。在您的應用程序中,獲取字符串,使用UTF8編碼創建它的數據對象,然後記錄字節。我的猜測是你會看到\ u ...字符不是utf8 –

回答

4

,你不應該需要做手腳HTML解碼。正如你所說的笑臉代碼點是\u263A。在PHP中,您可以用UTF8編碼的字符串表示爲"\xE2\x98\xBA"

UTF-8中的閃電符號(實際上是'高電壓符號')是\u26A1"\xE2\x9A\xA1"

這兩個字符在一些非表情符號字體中以常規Unicode符號的形式出現。你可以看到:

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

我不知道你在哪裏得到&#57661;來自但是那將是\ue13d這是在一個空的私人使用的Unicode範圍內,而不是在Unicode標準內的表情符號Check it here可能來自其他一些日本移動運營商標準,但對於iOS,您應該使用Unicode。

你可以從this table得到我的上述編碼或使用Emoji search tool

至於蘋果推。 This note表示您可以將表情符號發送爲UTF-8編碼的字符串,因此像{"alert":"\u26A1SHOCKER\u26A1"}這樣的json對象聽起來像會起作用。

1

爲googlers。 json_encode()增加一倍\

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

$payload = json_encode($body); 
$payload = str_replace("\", "\\", $payload);