PHP / Java バックエンド システムを介して iOS / Apple デバイスのプッシュ通知を送信しています。
現在直面している問題は、Java のマルチバイト文字数が PHP とは異なることです。
たとえば、以下は送信する必要があるアラビア語のテキストです。1 つは Java バックエンドから、もう 1 つは PHP ベースのバックエンド システムからのものです (PHP と Java バックエンド - どちらも異なり、相互に関係はありません)。
يبدا بقرص العقيلي واللقيمات وينتهي مع خالد حرية بالامارات نكهة وبهار مع القصار-٦ مساءا على تلفزيون الكويت
ここで、文字列の長さを確認すると、次のようになります。
Java:
length 106
byte 194
PHP:
length 369
byte 547
現在、Apple256 bytes
はペイロードのみを許可しているため、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));
誰もこの問題に直面したことがありますか? これに対する既知の解決策はありますか?
お知らせ下さい。