У меня есть два сценария - один в моем приложении iOS / Android и один на моем сервере. Оба используют разные библиотеки для подписки токенов пользователей на существующие и новые темы. В последнее время все новые темы перестали регистрироваться, и я не могу понять, почему.
В приложении и на моем сервере я не получаю ошибок при подписке пользователей на темы.
ВПриложение, которое я использую cordova-plugin-firebasex
- в частности, window.FirebasePlugin.subscribe(topicID)
, а на сервере я использую библиотеку php-fcm. Я сохраняю пользовательское устройство / токен на своем сервере и извлекаю из базы данных mysql следующие темы:
$client = new \Fcm\FcmClient($serverKey,$senderID) ;
$subscribe = new \Fcm\Topic\Subscribe($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 "\n\t\tEvent Topic: " .$eventID. " - " .$status ;
Похоже, что все работает, так как я не получаю никаких ошибок подключения / аутентификации. На сервере, когда устройство / токен, извлеченный из базы данных, больше не существует или является недействительным, приведенный выше код php возвращает ошибку FCM: Error: NOT_FOUND
, которая сообщает мне, что я общаюсь с Google и пытаюсь зарегистрировать пользователей по темам. ,Однако после 24 часов (а затем и некоторых) ни одна из новых тем не создается. А на сервере успешная подписка просто возвращает:
Использование var_dump ($ response):
array(1) {
["results"]=>
array(1) {
[0]=>
array(0) {
}
}
}
Для меня это просто плохая кодировка Google, она должна возвращать НЕЧТО, а не простокуча пустых результатов .... Я имею в виду, по крайней мере, сказать "ИСТИНА", "УСПЕХ", "ДОБАВЛЕНО" - или "ОБНАРУЖЕНА НОВАЯ ГРУППА - Создание темы и Добавление пользователя".
К сожалению, я не нашел способа для плагина FirebaseX показать мне ответ subscribe
. Однако вышеприведенный код и код приложения, похоже, сработали около 2 недель назад, и, насколько я помню, ничего не изменилось ни в приложении, ни в сценарии сервера.
Я бы понял, если бы мой serverKey / senderID былНеправильно, это приведет к ошибке при подключении к FCM (и я проверил оба параметра в настройках проекта FCM cloud messaging
. Или, если приложение неправильно подключалось к Firebase, я бы увидел ошибки в журналах, но отладка всех приложений показывает, когдаприложение инициализирует установление связи FCM, захватывает / обновляет пользовательское устройство / токен и, если оно изменилось с момента последнего запуска приложения пользователем, обновляет базу данных сервера новым токеном.