FCM 云消息传递不再注册新主题



我有两个脚本 - 一个在我的iOS/Android应用程序中,一个在我的服务器上。 两者都使用不同的库来订阅现有主题和新主题的用户令牌。 最近,所有新主题都停止注册,我不知道为什么。

在应用程序和我的服务器中,我在为用户订阅主题时没有收到错误。

在我正在使用cordova-plugin-firebasex的应用程序中 - 特别是window.FirebasePlugin.subscribe(topicID),在服务器上我正在使用 php-fcm 库。 我将用户设备/令牌存储在我的服务器上,并从 mysql 数据库中提取这些类型的主题:

$client = new FcmFcmClient($serverKey,$senderID) ;
$subscribe = new FcmTopicSubscribe($topicID);
$subscribe->addDevice($deviceID);
$response = $client->send($subscribe) ;
if (isset($response['results'][0]['error'])) {
$status = "Error: " .$response['results'][0]['error'] ;
$eveBC++ ;
} else {
$status = "Added! - " ;
$eveGC++ ;
}
echo "nttEvent Topic: " .$eventID. " - " .$status ;

看起来一切正常,因为我没有收到任何连接/身份验证错误。 在服务器上,当从数据库中提取的设备/令牌不再存在或无效时,上面的 php 代码会返回一个 FCM 错误:Error: NOT_FOUND它告诉我我与 google 的通信并尝试为用户注册主题正在工作。 但是,在 24 小时(然后是一些小时(后,不会创建任何新主题。 在服务器上,成功的订阅只会返回:

使用 var_dump($response(:

array(1) {
["results"]=>
array(1) {
[0]=>
array(0) {
}
}
}

对我来说,这只是糟糕的谷歌编码,它应该返回一些东西,而不仅仅是一堆空的结果......我的意思是,至少说"真","成功","已添加" - 或"检测到新组 - 创建主题并添加用户"。

不幸的是,我还没有找到FirebaseX插件向我显示subscribe响应的方法。 但是,上面的代码和应用程序代码似乎都在大约 2 周前工作,而且我可以回忆起,应用程序或服务器脚本都没有真正改变。

我会认为如果我的服务器密钥/发件人 ID 不正确,它会在连接到 FCM 时抛出错误(我在 FCM 项目cloud messaging设置中都进行了验证。 或者,如果应用程序未正确连接到Firebase,我会在日志中看到错误,但是所有应用程序调试都显示当应用程序初始化FCM通信已建立时,它会抓取/刷新用户设备/令牌,如果自上次用户打开应用程序以来发生了更改,则使用新令牌更新服务器数据库。

我正在回答我自己的问题,因此将来遇到这种令人沮丧的 FCM 不一致的任何人都会得到他们问题的答案。

我的代码从未被破坏。 由于 FCM 中无法查看现有主题或注册到主题的所有设备 ID,因此我使用的是允许您发送通知的 FCM 项目Cloud Messaging页面。 在该"发送通知"表单中,可以选择向topic发送消息/通知。 当我滚动浏览列出的主题时,没有一个新创建的主题出现在那里 - 即使在等待它们出现 72+ 小时之后。 因此,我一直认为我的新主题没有被创建。

这种形式具有误导性...它列出了一堆我的旧主题,但没有一个是我在过去 3 周内创建的新主题(新主题命名格式(。 因此,您不能依赖此表单来显示您创建的所有主题 ID。

相关内容

  • 没有找到相关文章