2013-05-20 10 views
8

Ich arbeite an iPhone-App mit dem Namen "INTERSTIZIO" .In diesem habe ich Funktionen wie Chat zwischen Benutzern implementiert.In diesem Benutzer kann Text, Ort und Text mit Emojis-Symbol senden.Wenn die App nicht ist Im offenen Modus am Empfänger Ende wird dann vom Backend Push erzeugt und dem Empfänger angezeigt. Ich kann Nachrichten in Push wie "UserName: Hallo ..." anzeigen, aber ich möchte auch Emojis Symbol anzeigen, wie "UserName: Hay :) "in Push-Nachricht, so jemand Ahnung haben, wie ich diese Art von Push-Nachricht mit Emojis-Code (wie für Lächeln Apfel-Code ist \ u263a) von Apple erreichen kann?Emojis Unterstützung in Apple Push-Benachrichtigung

Ich habe die in diesem Link angegebene Lösung verfolgt: http://code.iamcal.com/php/emoji/ Aber es gibt den gleichen Code zurück, den ich in Funktion übergeben habe. Es funktioniert gut auf Webseiten, aber nicht in Push-Nachricht.

Hier bin ich einen Screenshot der Push-Befestigung, wie es an meinem end.In sieht es aus kann man sehen, dass ich Smiley und Beleuchtung Symbol angezeigt habe, aber seine angezeigt mit Hilfe von HTML-Code unterstützt wie unten Code von PHP-Skript:

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

Aber in meinem Fall habe ich eingebaute Emojis Tastatur von Apple angezeigt und mit folgendem Code ich bin in der Lage Emojis Code zu erhalten:

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

oben Code ich bin in der Lage Emojis zu speichern und Anzeige im Chat-Fenstern aber wenn Empfänger Benutzer App dann in Eiter geschlossen haben h-Nachricht Ich kann Emojis-Symbol in Push-Nachricht nicht anzeigen.

Dank

enter image description here

+1

@PartialFinite Oh ja, ich habe das gleiche Problem. – M007

+0

Überprüfen Sie die zweite Antwort auf diese Frage und sehen Sie, ob es Ihnen hilft. – Greg

+0

Der obige Thread bedeutet, dass dies funktionieren kann. Ich nehme an, dass die Push-String nicht richtig UTF-8 ist. Entnehmen Sie die Zeichenfolge in Ihrer App, erstellen Sie ein Datenobjekt mit UTF8-Codierung, und protokollieren Sie die Bytes.Meine Vermutung ist, dass Sie die \ u ... Zeichen nicht die utf8 sehen –

Antwort

4

Sie sollten nicht über mit HTML-Decodierung zu verwirren müssen. Wie Sie sagen, ist der Codepunkt für lächelndes Gesicht \u263A. In PHP kann man, dass in einer UTF-8-codierten Zeichenfolge repräsentieren als "\xE2\x98\xBA"

Blitzschraube (eigentlich ‚Hochspannung‘) \u26A1 oder "\xE2\x9A\xA1" in UTF-8 ist.

Beide Zeichen sind in einigen Nicht-Emoji-Schriftarten als reguläre Unicode-Symbole vorhanden. Sie können sehen, mit:

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

Ich weiß nicht, wo du &#57661 bekommen; von, aber das wäre \ue13d das ist in einem leeren privaten Gebrauch Unicode-Bereich und nicht ein Emoji innerhalb des Unicode-Standards Check it here Möglicherweise ist es von einigen anderen japanischen Mobilfunkanbieter-Standard, aber für iOS sollten Sie Unicode verwenden.

Sie können meine obigen Kodierungen von this table erhalten oder diese Emoji search tool verwenden.

Wie für Apple Push. This note sagt, dass Sie Emoji als UTF-8 codierte Strings senden können, so ein Json-Objekt wie {"alert":"\u26A1SHOCKER\u26A1"} klingt wie es funktioniert.

1

für die googlers. json_encode() fügt double hinzu \

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

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