Push notifikace a Linphone
Napsal: pát 08. pro 2023 20:51:50
Dnes jsem trochu pokročil s pochopením toho, jak fungují push notifikace u Linphone.
Push notifikace mohou pomoci, pokud jsou nespolehlivé příchozí hovory, protože aplikace spí a na příchozí hovor nereaguje. Push notifikace také mohou pomoci šetřit baterii telefonu a data, protože není třeba udržovat spojení s VoIP operátorem. Push notifikace by měla aplikaci spolehlivě probudit, i když na některých telefonech tam může být nesmyslné zpoždění při doručování push notifikací. Zpoždění způsobují úpravy androidu výrobcem telefonu a přehnaná snaha šetřit baterii za každou cenu. Proč si to google lépe nepohlídá, nechápu. U jiných telefonů fungují push notifikace rychle a na 100% spolehlivě.
V nastavení SIP účtu je volba: Povolit push notifikace . Lze to zapnout nebo vypnout.
Tahle volba způsobí, že se při registraci začnou do Contact SIP hlavičky vkládat údaje pro SIP push.
Tedy pokud je volba zapnutá Hlavička Contact obsahuje:
Contact: <sip:763427@81.200.57.61:55863;pn-prid=c75amzVlRK-y0-vqu7WfOT:APA91bFV3sSOutrLZOGnN0uF8OXNpGDX3tb2UtSJYeayKdjExpJi8a2dagZJiPApId1UEoLz9Z-kNewnipGIhwwK_VB3_fXBo_Gwegl-5cu_GaOCAwJm4WWS0NEdS1Szu_LNf_T5OEyN;pn-provider=fcm;pn-param=929724111839;pn-silent=1;pn-timeout=0;transport=udp>;+sip.instance="<urn:uuid:e17bb843-1da4-0078-8ebd-a336339f586b>";+org.linphone.specs="lime"
Pokud je vypnutá obsahuje jen:
Contact: <sip:763427@192.168.0.117:38205;transport=udp>;+sip.instance="<urn:uuid:e17bb843-1da4-0078-8ebd-a336339f586b>";+org.linphone.specs="lime"
Parametry pn-prid,pn-provider,fcm a pn-param jsou právě ty, pomocí kterých se dá dělat push. Ale linphone to za nikoho neudělá. Nejenže to musí podporovat SIP server, ale aby bylo push kam poslat, je prý nutné udělat si vlastní build linphone. Tedy není možné použít Linphone z google play tak, jak je tam vystaven nyní, protože není kam tyto parametry posílat. (Ledaže by bylo někde zveřejněné URL, kam tyto parametry poslat)
Aby bylo možné udělat pohodlné nastavování pomocí QR kódu (provisioning), je také potřeba být vývojář nebo mít rootnutý android telefon, protože jinak se k vygenerovanému konfiguračnímu souboru nedá dostat. Android totiž chrání data každé aplikace jako by to byla bankovní, takže je nedovolí číst ani majiteli telefonu. Nutné prý je provést si vlastní Google Play services configuration .
Tedy když to shrnu, aby v Linphone fungovaly push notifikace, je třeba mít speciálně upravený SIP server (nebo použít SIP server přímo od linphone, který se jmenuje flexiSIP - ale to raději, ne protože je to černá skříňka napsaná v c) a také si sám přeložit a distribuovat vlastní kopii Linphone, aby bylo možné push notifikace doručovat. Proč to takto Linphone komplikuje bez toho aby k tomu poskytl nějakou srozumitelnou dokumentaci nerozumím.
Udělat potřebné změny na SIP proxy je pro nás jednoduché, ale provést vlastní build Linphone znamená učit se něco nového. Pokud byste byl někdo ochoten nám s tím pomoci, klidně i za úplatu, ozvěte se. Proč tohle nedělá sám Linphone, nechápu.
Musíme tak vlastně vytvořit klon Linphone, který se asi bude muset jmenovat jinak, ale budou mu fungovat push notifikace. Nejspíš bychom pak mohli službu nabízet i pro jiné VoIP operátory na celém světě.
Tyto informace mám převážně od vývojáře ACR phone, tedy měly by být relativně spolehlivé a přesné. ACR phone má vlastní push server, který jsme jim pomáhali zprovoznit. Je jen třeba tuhle možnost zapnout v nastavení linky. Možné je také použit PUSH server provozovaný přímo Odorik.cz dle návodu - http://www.odorik.cz/w/acr_phone:acr_phone . ACR Phone ale nemusí každému vyhovovat protože úplně nahrazuje volací aplikaci androidu, tedy je to poměrně velký zásah do fungování telefonu. To má ale výhody v podobě dokonalé integrace SIPu do androidu (např. společná historie hovorů a podobně).
Push notifikace mohou pomoci, pokud jsou nespolehlivé příchozí hovory, protože aplikace spí a na příchozí hovor nereaguje. Push notifikace také mohou pomoci šetřit baterii telefonu a data, protože není třeba udržovat spojení s VoIP operátorem. Push notifikace by měla aplikaci spolehlivě probudit, i když na některých telefonech tam může být nesmyslné zpoždění při doručování push notifikací. Zpoždění způsobují úpravy androidu výrobcem telefonu a přehnaná snaha šetřit baterii za každou cenu. Proč si to google lépe nepohlídá, nechápu. U jiných telefonů fungují push notifikace rychle a na 100% spolehlivě.
V nastavení SIP účtu je volba: Povolit push notifikace . Lze to zapnout nebo vypnout.
Tahle volba způsobí, že se při registraci začnou do Contact SIP hlavičky vkládat údaje pro SIP push.
Tedy pokud je volba zapnutá Hlavička Contact obsahuje:
Contact: <sip:763427@81.200.57.61:55863;pn-prid=c75amzVlRK-y0-vqu7WfOT:APA91bFV3sSOutrLZOGnN0uF8OXNpGDX3tb2UtSJYeayKdjExpJi8a2dagZJiPApId1UEoLz9Z-kNewnipGIhwwK_VB3_fXBo_Gwegl-5cu_GaOCAwJm4WWS0NEdS1Szu_LNf_T5OEyN;pn-provider=fcm;pn-param=929724111839;pn-silent=1;pn-timeout=0;transport=udp>;+sip.instance="<urn:uuid:e17bb843-1da4-0078-8ebd-a336339f586b>";+org.linphone.specs="lime"
Pokud je vypnutá obsahuje jen:
Contact: <sip:763427@192.168.0.117:38205;transport=udp>;+sip.instance="<urn:uuid:e17bb843-1da4-0078-8ebd-a336339f586b>";+org.linphone.specs="lime"
Parametry pn-prid,pn-provider,fcm a pn-param jsou právě ty, pomocí kterých se dá dělat push. Ale linphone to za nikoho neudělá. Nejenže to musí podporovat SIP server, ale aby bylo push kam poslat, je prý nutné udělat si vlastní build linphone. Tedy není možné použít Linphone z google play tak, jak je tam vystaven nyní, protože není kam tyto parametry posílat. (Ledaže by bylo někde zveřejněné URL, kam tyto parametry poslat)
Aby bylo možné udělat pohodlné nastavování pomocí QR kódu (provisioning), je také potřeba být vývojář nebo mít rootnutý android telefon, protože jinak se k vygenerovanému konfiguračnímu souboru nedá dostat. Android totiž chrání data každé aplikace jako by to byla bankovní, takže je nedovolí číst ani majiteli telefonu. Nutné prý je provést si vlastní Google Play services configuration .
Tedy když to shrnu, aby v Linphone fungovaly push notifikace, je třeba mít speciálně upravený SIP server (nebo použít SIP server přímo od linphone, který se jmenuje flexiSIP - ale to raději, ne protože je to černá skříňka napsaná v c) a také si sám přeložit a distribuovat vlastní kopii Linphone, aby bylo možné push notifikace doručovat. Proč to takto Linphone komplikuje bez toho aby k tomu poskytl nějakou srozumitelnou dokumentaci nerozumím.
Udělat potřebné změny na SIP proxy je pro nás jednoduché, ale provést vlastní build Linphone znamená učit se něco nového. Pokud byste byl někdo ochoten nám s tím pomoci, klidně i za úplatu, ozvěte se. Proč tohle nedělá sám Linphone, nechápu.
Musíme tak vlastně vytvořit klon Linphone, který se asi bude muset jmenovat jinak, ale budou mu fungovat push notifikace. Nejspíš bychom pak mohli službu nabízet i pro jiné VoIP operátory na celém světě.
Tyto informace mám převážně od vývojáře ACR phone, tedy měly by být relativně spolehlivé a přesné. ACR phone má vlastní push server, který jsme jim pomáhali zprovoznit. Je jen třeba tuhle možnost zapnout v nastavení linky. Možné je také použit PUSH server provozovaný přímo Odorik.cz dle návodu - http://www.odorik.cz/w/acr_phone:acr_phone . ACR Phone ale nemusí každému vyhovovat protože úplně nahrazuje volací aplikaci androidu, tedy je to poměrně velký zásah do fungování telefonu. To má ale výhody v podobě dokonalé integrace SIPu do androidu (např. společná historie hovorů a podobně).