Так что я использую Cordova Firebase Plugin и он работает для правильной генерации токенов. Для тестирования я проверяю прохождение уведомлений непосредственно из моего приложения через ajax, чтобы убедиться, что токен действителен. Это работает нормально, используя этот обычный вызов ajax:
$.ajax({
type: "POST",
url: "https://fcm.googleapis.com/fcm/send",
headers: { 'Authorization': 'key=<My key>' },
data: JSON.stringify(
{
"to": <deviceId?,
"notification": {
"body": "Working!",
"title": "Omg it worked",
},
"data": {
"body": "Working!",
"title": "Omg it worked",
},
"content_available": true,
"priority": "high"
}
),
contentType: "application/json; charset=utf-8",
success: function (result) {
alert(typeof result);
if (result.failure === 1) {
alert("Token invalid, unregistering and creating new one");
window.FirebasePlugin.unregister();
window.FirebasePlugin.getToken(function (token) {
localStorage.setItem("firebaseToken", token);
//here the Token update call will test again once new token event is fired
});
}
else {
var currentToken = localStorage.getItem("firebaseToken");
alert("Token valid now <br />" + currentToken);
}
},
error: function (msg) {
alert("Ajax Error " + JSON.stringify(msg));
}
});
Так что это работает изнутри самого приложения, а также работает через консоль Firebase для отправки сообщений на этот идентификатор устройства. У меня есть тот же код, помещенный в локальный модуль с использованием того же вызова AJAX, и он терпит неудачу таким же образом. Рестлет, Бессонница, Почтальон и т. Д. Все возвращают одно и то же.
{
multicast_id: 8834986220110966000,
success: 0,
failure: 1,
canonical_ids: 0,
results: [ { error: 'InvalidRegistration' } ]
}
Я проверил ключи сервера, идентификаторы устройств, авторизованные домены, проверил сведения о заголовке сети на работающие и сбойные вызовы, открыл все приложения с помощью плагина белого списка cordova и исчерпал всеЯ могу найти, прибегая к помощи. Вы знаете, что находитесь в конце очереди, когда все становится русским или китайским. Все говорит, просто проверьте ваш идентификатор устройства, но он действителен через ajax-вызов приложения и действителен через консоль Firebase.
У всех есть идеи по этому поводу. Я думаю, что это сообщение, вероятно, вводит в заблуждение. Это не может быть недействительным, так как я могу подключиться с помощью вызова ajax через приложение и консоль. Возможно, приложение по какой-то причине просто отклоняет сообщение?