我们通过 PHP / Java 后端系统发送 iOS / Apple 设备推送通知。
现在我们面临的问题是,Java 的多字节字符计数与 PHP 不同。
例如,下面是我们必须发送的阿拉伯语文本,一个来自 Java 后端,一个来自基于 PHP 的后端系统(PHP 和 Java 后端 - 两者不同,彼此没有关系):
يبدا بقرص العقيلي واللقيمات وينتهي مع خالد حرية بالامارات نكهة وبهار مع القصار-٦ مساءا على تلفزيون الكويت
现在,当我们检查字符串长度时:
Java:
length 106
byte 194
PHP:
length 369
byte 547
现在 Apple 只允许256 bytes
Payload,因此 Java 后端能够完整地发送上述阿拉伯文本,而 PHP 中不允许这样做。我们需要减少 PHP 的文本。
以下是我的 PHP 代码:
// PHP Interpretation:
echo $str = 'يبدا بقرص العقيلي واللقيمات وينتهي مع خالد حرية بالامارات نكهة وبهار مع القصار-٦ مساءا على تلفزيون الكويت';
echo '<br><br>';
$payload['aps'] = array('alert' => $str, 'sound' => 'default');
$payload = json_encode($payload);
echo $payload;
echo strlen($payload);
echo '<br><br>';
echo '<br><br>';
echo utf8_encode($str);
echo '<br><br>';
echo json_encode($str);
echo '<br><br>';
echo strlen(json_encode($str));
echo '<br>';
echo strlen(utf8_encode($str));
echo '<br>';
echo mb_strlen(json_encode($str));
有人遇到过这个问题吗?任何已知的解决方案?
请指教。