Ответ 1
В момент написания (FirebaseMessaging 1.1.0/Firebase 3.2.0) FCM использует обычные APN под iOS, поэтому поддержка PushKit-уведомлений отсутствует.
Кто-нибудь имеет представление о поддержке Firebase Cloud Messaging VOIP pushkit сервисов.
Если да, то может кто-нибудь, пожалуйста, предоставить руководство для того же.
То же самое, что реализовано в Skype/Hangout/WhatsApp или любых других приложениях на основе VOIP.
Заранее спасибо.
В момент написания (FirebaseMessaging 1.1.0/Firebase 3.2.0) FCM использует обычные APN под iOS, поэтому поддержка PushKit-уведомлений отсутствует.
Я получил PushKit + Firebase, работающий через node-apn. Просто установите его через npm в папку облачных функций. Вы можете получить жетоны из своего пожарного магазина или что-то в этом роде, но я думаю, что это само за себя...
Вот некоторый фиктивный код:
export const test = functions.https.onRequest((request, response) => {
const config = {
production: false, /* change this when in production */
cert: 'yourCERT.pem',
key: 'yourKey.pem',
};
const apnProvider = new apn.Provider(config);
const notification = new apn.Notification();
const recepients: string[] = [];
recepients.push(apn.token('SOME PUSHKIT TOKEN'));
recepients.push(apn.token('ANOTHER PUSHKIT TOKEN'));
notification.topic = 'com.your.app.voip'; // you have to add the .voip here!!
notification.payload = {
// some payload
};
return apnProvider.send(notification, recepients).then((reponse) => {
console.log(reponse);
return response.send("finished!");
});
});
Это сработало для меня! Не забудьте добавить файл Authkey_xxxx.p8 в свой каталог и не забудьте добавить .voip к вашему идентификатору пакета.
export const test = functions.https.onRequest((request, response) => {
const config = {
production: false, /* change this when in production */
token: {
key: "./AuthKey_xxxx.p8",
keyId: "xxxx",
teamId: "yyyy"
}
};
const apnProvider = new apn.Provider(config);
const notification = new apn.Notification();
const recepients: string[] = [];
recepients.push(apn.token('SOME PUSHKIT TOKEN'));
recepients.push(apn.token('ANOTHER PUSHKIT TOKEN'));
notification.topic = 'com.your.app.voip'; // you have to add the .voip here!!
notification.payload = {
// some payload
};
return apnProvider.send(notification, recepients).then((reponse) => {
console.log(reponse);
return response.send("finished!");
});
});