有点奇怪,尝试使用 Parse 通过 deviceToken 将通知推送到设备。
如果我按字面意思指定 deviceToken,即
$query->equalTo("deviceToken", "uniquedevicetoken");
或
$token = "uniquedevicetoken";
$query->equalTo("deviceToken", $token);
推送工作顺利。
但是,如果我尝试使用数据库中的 token ,即
$query->equalTo("deviceToken", $user->gcm_regid);
函数没有被调用,即使我回显原始字符串和变量在一起,它们看起来是相同的。
我还尝试了返回 2 的 strcmp()。
因此,即使这些字符在视觉上看起来完全相同,但一个有效,一个无效。
token 存储在 MySQL 中,我尝试了 VARCHAR 和 TEXT 的几种不同的编码,每次都得到相同的结果。
最佳答案
好的解决方案是在数据库中写入不带“特殊”字符的“gcm_regid”,因为之前关心清理总是有意义的,所以数据库将保持“干净”。但作为快速解决方案,您可以试试这个:
$query->equalTo("deviceToken", rtrim($user->gcm_regid));
关于php - GCM/Parse 推送函数在使用字符串文字而非字符串变量时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299095/