Мы используем устройства с ОС Linux и включенным JavaScript (с использованием node.js). Мы используем Google FCM для получения уведомлений. Мы используем библиотеку javascript (здесь добавлена функция Register()), чтобы получить токен fcm путем передачи идентификатора отправителя. Все работало нормально. Но за последние несколько дней мы получаем сообщение PHONE_REGISTRATION_ERROR и ошибку UNIMPLEMENTED/UNIMLEMENTED при попытке получить токен FCM.
Ниже приведен фрагмент кода.
(async () => {
try {
const credentials = await register(senderID);
const token = credentials.fcm.token;
const persistentIds = [];
await listen({ ...credentials, persistentIds }, onNotification);
} catch (e) {
console.info("Error::" + e);
}
})();
Ниже приведен код функции регистрации.
const uuidv4 = require('uuid/v4');
const { register: registerGCM } = require('../gcm');
const registerFCM = require('../fcm');
module.exports = register;
async function register(senderId) {
// Should be unique by app - One GCM registration/token by app/appId
const appId = `wp:receiver.push.com#${uuidv4()}`;
const subscription = await registerGCM(appId);
const result = await registerFCM({
token : subscription.token,
senderId,
appId,
});
// Need to be saved by the client
return Object.assign({}, result, { gcm : subscription });
}
За последние несколько дней мы получили ошибку PHONE_REGISTRATION_ERROR и UNIMPLEMENTED, как показано ниже.
Register request has failed with Error=PHONE_REGISTRATION_ERROR
Retry... 1
Error::StatusCodeError: 501 - "{\n \"error\": {\n \"code\": 501,\n \"message\": \"Operation is not implemented, or supported, or enabled.\",\n \"status\": \"UNIMPLEMENTED\"\n }\n}\n"
Или иногда возникает НЕОПРЕДЕЛЕННАЯ ошибка и невозможно получить токен. Я пытался перезагрузить устройства несколько раз, но безрезультатно.
Я ответил на множество вопросов в Интернете. Все они демонстрируют проблемы с приложениями Android, решение которых заключается в очистке кэша, удалении приложения и переустановке приложения. Но я не смог найти решение для этой программы на основе JavaScript. Может кто-нибудь, пожалуйста, дайте мне знать, есть ли способ решить эту проблему.
Обновлен код функции регистрации.
Что такое const { register: registerGCM } = require('../gcm');
и const registerFCM = require('../fcm');
?
Я также отмечу, что FCM изначально не поддерживает nodejs для получения сообщений (только браузеры, Android и iOS). Вы делаете здесь что-то, выходящее за рамки того, что явно разрешает Google, и это неясно.
Хорошо. Чтобы внести ясность, мы используем эту библиотеку github.com/MatthieuLemoine/push-receiver/blob/…. Это была единственная библиотека, которую мы включили для поддержки уведомлений. Я не уверен, почему он внезапно перестает работать без каких-либо изменений.
У меня та же проблема. Я использую ту же библиотеку в своем приложении Electron.
На устройствах, которые уже успешно получили токен FCM, все работает нормально. Но новые устройства не могут получить новый токен FCM. Они получают ту же ошибку, что упомянута в сообщении OG.
Это не дает ответа на вопрос. Как только у вас будет достаточная репутация , вы сможете комментировать любую публикацию ; вместо этого дайте ответы, не требующие разъяснений от спрашивающего . - Из отзыва
@rixicon: Надеюсь, ответ решит вашу проблему.
Push-приемник библиотеки javascript использует устаревшие API Firebase. FB прекратил поддержку этих API, что и стало причиной сбоя. Мы изменили наш код, чтобы использовать библиотеку push-receiver-v2, что устранило проблему.
Что это за «библиотека Javascript», о которой вы говорите? Что такое
register
иlisten
? Эффективно ли работает этот код JavaScript в браузере или в какой-либо другой среде, например nodejs? Пожалуйста, отредактируйте вопрос, чтобы показать достаточно информации, которую кто-то мог бы использовать для воспроизведения проблемы.