У меня проблема с использованием firebase в моем приложении Nativescript, когда я использую Android, он прекрасно работает, но не работает с IOS. проблема в отправке сообщений.
Я использую push-плагин на стороне клиента
Это часть регистра на стороне клиента IOS, использующая pushPlugin
const iosSettings:any = {
badge: true,
sound: true,
alert: true,
interactiveSettings: {
actions: [{
identifier: 'READ_IDENTIFIER',
title: 'Read',
activationMode: "foreground",
destructive: false,
authenticationRequired: true
}, {
identifier: 'CANCEL_IDENTIFIER',
title: 'Cancel',
activationMode: "foreground",
destructive: true,
authenticationRequired: true
}],
categories: [{
identifier: 'READ_CATEGORY',
actionsForDefaultContext: ['READ_IDENTIFIER', 'CANCEL_IDENTIFIER'],
actionsForMinimalContext: ['READ_IDENTIFIER', 'CANCEL_IDENTIFIER']
}]
},
notificationCallbackIOS: (message: any) => {
alert(JSON.stringify(message));
}
};
pushPlugin.register(iosSettings, (token: string) => {
// update the token in the server
alert("Device registered. Access token: " + token);
});
}
}, (errorMessage: any) => {
alert("Device NOT registered! " + JSON.stringify(errorMessage));
});
Вот так я получаю свой токен на push-уведомление,
после получения токена, когда я использую приложение-толкач, все работает отлично, я получаю уведомление на устройстве IOS
но проблема в том, когда я пытаюсь отправить уведомление с сервера!
Я получаю эту ошибку:
Указан неверный регистрационный токен. Убедитесь, что это соответствует
регистрационный токен, который клиентское приложение получает от регистрации в FCM.
Код узла на моем сервере
var payload = {
data: {
targetId:userToken,
body: "some text"
}
};
var options = {
priority: "high",
contentAvailable: true,
timeToLive: 60 * 60 * 24
};
Admin.messaging().sendToDevice(userToken, <any>payload,options)
.then((response) => {
console.log('notification arrived successfully', response.results[0]);
})
.catch((error) => {
console.log('notification failed', error);
});