FCM Cloud Messaging больше не регистрирует новые темы - PullRequest
0 голосов
/ 13 октября 2019

У меня есть два сценария - один в моем приложении 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, захватывает / обновляет пользовательское устройство / токен и, если оно изменилось с момента последнего запуска приложения пользователем, обновляет базу данных сервера новым токеном.

1 Ответ

0 голосов
/ 13 октября 2019

Я отвечаю на свой собственный вопрос, чтобы в будущем любой, кто столкнется с этим расстраивающим несоответствием FCM, получил ответ на свою проблему.

Мой код никогда не нарушался. Поскольку в FCM нет способа просмотра существующих тем или всех идентификаторов устройств, зарегистрированных в теме, я использовал страницу проекта FCM Cloud Messaging, которая позволяет отправлять уведомления. В этой форме отправки уведомления можно отправить сообщение / уведомление на topic. Когда я прокручиваю перечисленные темы, ни одна из вновь созданных тем не появляется там - даже после 72 с лишним часов ожидания их появления. Таким образом, я продолжал думать, что мои новые темы не создавались.

Эта форма вводит в заблуждение ... в ней перечислены мои старые темы, но ни одна из новых, которые я создавал за последние 3недели (новый формат именования тем). Таким образом, вы не можете использовать эту форму для отображения всех идентификаторов тем, которые вы создали.

...