iOS:推送通知中没有获得表情符号 - 目标C

时间:2018-05-05 20:02:13

标签: ios objective-c unicode push-notification emoji

我已经在我的应用程序中实现了聊天中的表情符号,这在我的应用程序中运行良好。但是当我通过推送通知获得相同的消息时,它会显示unicode而不是表情符号。有人可以帮帮我吗?

以下是截图:

Notification showing Unicode

Message showing emojis

下面是我用来转换表情符号并在我的留言页中再次显示的代码:

- (NSString *)convertSmiley:(NSString *)type :(NSString *)text {
    NSString *emojiValue = @"";
    if ([type isEqualToString:@"encode"]) {
        NSData *data = [text dataUsingEncoding:NSNonLossyASCIIStringEncoding];
        emojiValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    }
    else {
        NSData *data2 = [text dataUsingEncoding:NSUTF8StringEncoding];
        emojiValue = [[NSString alloc] initWithData:data2 encoding:NSNonLossyASCIIStringEncoding];
    }
    return emojiValue;
}

1 个答案:

答案 0 :(得分:0)

在我们的一个项目中,我们使用消息的编码解码,因为从iOS发送的笑脸在Android中看起来不正确,反之亦然,Android上的笑脸在iOS上看起来不正确。

所以我们采用了这种方法来编码消息并将其发送到服务器。他们以编码形式保存数据,并将相同的编码数据发送到解码后的其他移动端。

  

但是对于远程通知,

     

来自服务器的通知推送显示在设备本身处理的通知中心的默认iOS弹出窗口中。我们的解码仅在应用程序内部发生,因此您的消息将以编码形式显示在设备上。

enter image description here

要解决此问题:

我们要求后端团队首先通过解码发送远程推送消息。

我们在Swift中使用以下代码编码解码方法:

// Encode strings in UTF-8 format
func encode(_ s: String) -> String {
    let variable = s.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!
    return variable
}

// Decode strings in UTF-8 format
func decode(_ s: String) -> String? {
    let val = s.replace(target: "+", withString: "%20") // + appears in string while encoded from android
    let decodedString = val.removingPercentEncoding!
    return decodedString
}