Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 推送通知脚本中的pack()出现警告_Php_Iphone_Push Notification_Apple Push Notifications_Pack - Fatal编程技术网

Php 推送通知脚本中的pack()出现警告

Php 推送通知脚本中的pack()出现警告,php,iphone,push-notification,apple-push-notifications,pack,Php,Iphone,Push Notification,Apple Push Notifications,Pack,我正在用PHP编写推送通知脚本。 $deviceToken是正确的,但我在这行有一个警告: $b = pack('H*', str_replace(' ', '', $deviceToken)); 警告如下: 警告:pack()[function.pack]:在第33行的/myurl.com/send\u push\u notification.php中键入H:unliked十六进制数字 而且通知没有到达 你知道为什么吗?我也有同样的问题。 我最终使用了 trim($device_token)

我正在用PHP编写推送通知脚本。
$deviceToken
是正确的,但我在这行有一个警告:

$b = pack('H*', str_replace(' ', '', $deviceToken));
警告如下:

警告:pack()[function.pack]:在第33行的/myurl.com/send\u push\u notification.php中键入H:unliked十六进制数字

而且通知没有到达

你知道为什么吗?

我也有同样的问题。 我最终使用了

trim($device_token)
而不是

str_replace(' ', '', $deviceToken)

最后解决了这个问题。

我也遇到了同样的问题。最后,我发现我的URL中有一个空格字符!
所以,只要检查一下你的URL,也许这就是错误所在。

我也遇到了同样的问题。它解决了我的问题。尝试使用以下代码:

chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $item[0])) . chr(0) . chr(strlen($payload)) . $payload;  

如果有人仍然存在此问题,请尝试

$deviceToken = pack('H*', str_replace(' ', '', sprintf('%u', CRC32($deviceToken))));

您缺少一个结束符
(尽管我猜这是一个复制/粘贴错误,因为它无法解析),而且,当您
echo stru_替换(“”,,$deviceToken)时,您会得到什么?是的,对不起,这是一个复制粘贴错误。。。当然,在php脚本中有一个问题:$deviceToken的值是多少?如果它有
123ABCZ
,则
Z
将触发非法十六进制数字警告。Z可以是任何东西,甚至是换行符/回车符。此外,如果它以
0x
开头,它将不起作用(令人烦恼的是,$deviceToken类似于“a9e3a660924c2bf96b6540fe78697bed9fe85332e44323cbe4dbd6b04120eaaf”是的,这对我来说很有效。设备令牌后面有一个空格。当我使用
trim($device\u-token)
而不是
str\u-replace(“”,$deviceToken)
时,推送通知不会到达iphone设备