PHP&;iOS推送通知的Java字符串长度阿拉伯语文本大小问题

PHP&;iOS推送通知的Java字符串长度阿拉伯语文本大小问题,java,php,string,character-encoding,apple-push-notifications,Java,Php,String,Character Encoding,Apple Push Notifications,我们通过PHP/Java后端系统发送iOS/Apple设备推送通知 我们现在面临的问题是,Java具有与PHP不同的多字节字符计数 例如,下面是我们必须发送的阿拉伯语文本,一个来自Java后端,另一个来自基于PHP的后端系统(PHP和Java后端-两者都不同,彼此没有关系): 在码码>方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方

我们通过PHP/Java后端系统发送iOS/Apple设备推送通知

我们现在面临的问题是,Java具有与PHP不同的多字节字符计数

例如,下面是我们必须发送的阿拉伯语文本,一个来自Java后端,另一个来自基于PHP的后端系统(PHP和Java后端-两者都不同,彼此没有关系):

在码码>方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方代码

现在,当我们检查字符串长度时:

Java:
length 106 
byte 194

PHP:
length 369
byte 547
现在苹果只允许
256字节的有效负载,因此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));
//PHP解释:
在各1575555555555555555才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会才会ن;
回音“

”; $payload['aps']=array('alert'=>$str,'sound'=>'default'); $payload=json_encode($payload); echo$有效载荷; echo-strlen(有效载荷); 回音“

”; 回音“

”; 回波utf8_编码($str); 回音“

”; echo json_编码($str); 回音“

”; echo strlen(json_encode($str)); 回声“
”; echo strlen(utf8_编码($str)); 回声“
”; echo mb_strlen(json_encode($str));
有人曾经面对过这个问题吗?有什么已知的解决方案吗


请告知。

暂时有一个窍门[不确定这是永久解决方案]:将来可能对其他人有用

注释如下行代码

//$payload = json_encode($body);
并将
JSON格式直接附加到有效负载变量:

// static sound and badge commands
$payload = '{"aps":{"alert":"'.$message.'","sound":"default","badge":"+1"}}';

// dynamic sound and badge commands
$payload = '{"aps":{"alert":"'.$message.'","sound":"'.$sound.'","badge":'.$badge.'}}';
在这里,
$message
将是我的
阿拉伯字符串
,它
工作起来像个符咒

非常有趣:-)

我真的在寻找一个如此棒的答案,你救了我一天。。。我想虽然徽章已经不起作用了!!! 它对我的作用是这样的:

$badge = 3;
$payload = '{"aps":{"alert":"'.$message.'","sound":"'.$sound.'","badge":'.$badge.'}}';

我通常让服务器端计算下一个徽章计数。

非常欢迎,这个技巧也帮助我克服了文本长度问题,特别是非英语长文本推送notifications@Sujeet:是的,这是一个非常有用的技巧,也救了我:)愚蠢的解决方案,但它很棒!!非常感谢:)