Поддерживает ли Firebase Cloud Messaging сервисы VOIP pushkit?

Кто-нибудь знает о Firebase Cloud Messaging, поддерживающем VOIP pushkit.

Если да, то может кто-нибудь предоставить рекомендации для того же.

То же самое, что реализовано в Skype / Hangout / WhatsApp или любых других приложениях на основе VOIP.

Заранее спасибо.


person Hasya    schedule 19.05.2016    source источник


Ответы (3)


На момент написания (FirebaseMessaging 1.1.0/Firebase 3.2.0) FCM использует обычные APN на iOS, поэтому уведомления PushKit не поддерживаются.

person Ian Barber    schedule 19.05.2016
comment
Насколько я понимаю, да, FMC работает с PushKit, потому что с экземпляра сервера не требуется никаких изменений! Идет через APN. То, как это реализовано в iOS (разные обратные вызовы), отличается от обычных push-уведомлений. Если вы получите свой идентификатор через PushKit и передадите его в FCM, служба, которую он выберет, и полезная нагрузка останутся теми же. Он просто приходит на iOS-устройство, опять же, через разные обратные вызовы. Я не проверял это, но готов поспорить, что это работает. Я не видел никакой разницы в PHP-скрипте, который будет отправлять PushKit, по сравнению с тем, который будет делать простое Push-уведомление. - person EdGs; 07.10.2016
comment
@EdGs Это больше, чем просто разные обратные вызовы на клиенте. Тема, отправляемая на сервер Apple, отличается для уведомления PushKit, и серверы Firebase должны знать об этом, чтобы отправить правильную тему. Теперь есть универсальные push-сертификаты от Apple, поэтому вы сможете создать сертификат, который будет его поддерживать, но если Firebase не отправит правильную тему, это будет обычный APN, а не PushKit. - person chadbag; 19.01.2018
comment
Я только вчера запросил Google о поддержке уведомлений VoIP через FCM, и они сообщили мне, что это не поддерживается и все еще находится в их списке запросов функций без ETA. - person CoastalB; 20.03.2018
comment
Он все еще не поддерживается? - person Opengamer; 06.07.2018
comment
Он все еще не поддерживается? мы ищем в Интернете, чтобы использовать его, но я не получаю никаких полезных ссылок. - person Vasanth; 31.10.2018
comment
Он все еще не поддерживается? - person Shubham1164; 13.02.2019
comment
Если на стороне сервера нет изменения кода, то он должен работать. Но это не работает. Почему??? - person Shubham1164; 13.02.2019

Это сработало для меня! Не забудьте добавить файл 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!");
    });
});
person marouan azizi    schedule 01.07.2019
comment
Мне не хватало .voip в идентификаторе пакета в теме уведомлений. - person Robert Sutton; 20.08.2019
comment
Означает ли это, что клиент также должен подписаться на тему «com.your.app.voip», чтобы получать уведомления? - person SleepNot; 26.05.2020
comment
@marouan azizi Итак, с этим серверным кодом метод приложения PKPushRegistry:didReceiveIncomingPushWithPayload() был вызван вместо UIApplication:didReceiveRemoteNotification() ? - person Gruntcakes; 19.01.2021

У меня 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!");
        });
    });

Ссылка на node-apn

person p.wiesinger    schedule 09.06.2019
comment
поэтому с этим серверным кодом метод приложения PKPushRegistry:didReceiveIncomingPushWithPayload() был вызван вместо UIApplication:didReceiveRemoteNotification() ? - person Gruntcakes; 19.01.2021
comment
такое поведение предусмотрено, поскольку pushkit-уведомление не имеет ничего общего с обычным удаленным уведомлением... Если вы это имеете в виду...? - person p.wiesinger; 02.03.2021