Jak odesílat oznámení o tichém push

Pouze s jedním jednoduchým požadavkem HTTP POST.

Tiché oznámení push, nebo ho někdo může nazvat na pozadí, je oznámení, které nespouští žádné varování ani zvuk. Probudí vaši aplikaci a umožní vám provádět na pozadí jakékoli operace, které nesouvisí s uživatelským rozhraním.

Ve většině případů se při aktualizaci obsahu na pozadí používají oznámení tichého push. Někteří vydavatelé aplikací ji však mohou použít k dálkové aktivaci nebo deaktivaci určitých funkcí aplikace pro účely testování A / B.

V tomto článku se podívejme, jak můžete použít klientský nástroj API k odeslání tichého oznámení push do zařízení iOS pro účely testování.

Předpoklad

Nastavení

Pro tento článek budu používat Firebase jako push notifikační server. Pokud jste nenastavili aplikaci pro oznámení push, zde je skvělý průvodce Firebase, který vám pomůže začít.

Všiml jsem si však, že průvodce zmeškal v jednom zásadním kroku - v Xcode musíte přidat funkce „Režimy pozadí“ a „Oznámení Push“, aby vaše aplikace mohla dostávat tiché oznámení push.

Přidání funkcí „Režimy pozadí“ a „Oznámení Push“

Omezení

Než začneme, je zde několik omezení, o kterých by si měl být každý vědom:

  1. Oznámení push můžete testovat pouze na reálném zařízení iOS. Simulátor iOS nebude moci přijímat žádná oznámení push.
  2. Pokud je zařízení v režimu „nízkých dat“, nebude oznámení tichého push fungovat.
  3. Metoda, kterou vám ukážu, funguje pouze na tichých oznámeních push. To znamená, že jej nelze použít k odeslání interaktivního oznámení push (oznámení push, které zobrazí výstrahu nebo přehraje zvuk).

Se vším na to začněme.

Odesílání oznámení o tichém push

Chcete-li odeslat tiché oznámení push, musíte nejprve získat klíč serveru cloudových zpráv Firebase a token Firebase FCM.

Poté můžete využít jakékoli klientské nástroje API a provést požadavek POST na rozhraní Google API, které poté odešle užitečnou zátěž oznámení do vašeho testovacího zařízení.

Projdeme každý krok jeden po druhém.

# 1. Získejte klíč serveru Firebase Cloud Messaging

Pokud jste správně nastavili aplikaci v konzole Firebase Console, můžete snadno získat klíč serveru ze stránky nastavení projektu.

Na stránce nastavení projektu přejděte na kartu „Cloud Messaging“, měli byste vidět klíč serveru v části „Přihlašovací údaje projektu“.

Otevřete stránku nastavení projektuZískání klíče serveru

Jděte do toho a zkopírujte serverový klíč a vložte jej na snadný přístup, budeme jej potřebovat při konfiguraci klientského nástroje API.

# 2. Získejte FCM Token

V sadě Firebase SDK existuje metoda delegování, která bude volána, jakmile bude k dispozici token FCM, můžete tuto metodu delegování implementovat do AppDelegate.swift a vytisknout token FCM.

Zkopírujte a vložte token FCM na místo, kam se snadno dostanete, protože jej budeme potřebovat velmi brzy.

# 3. Nakonfigurujte klientský nástroj API

V této sekci budu používat požadavek Talend API Tester (rozšíření Google Chrome), abych podal požadavek POST. Úlohu by měly provádět i další klientské nástroje API, jako je Postman a Advanced REST Client.

Nyní jdeme do toho a vytvoříme POST požadavek, který zacílí na následující URL:

https://fcm.googleapis.com/fcm/send

Dále musíte také nakonfigurovat záhlaví požadavků POST.

Content-Type: application / json Authorization: key = [your_server_key]

V záhlaví Autorizace nahraďte [your_server_key] skutečným serverovým klíčem, který jste získali dříve. Upozorňujeme, že předpona key = musí být součástí hlavičky Autorizace.

Adresa URL a záhlaví požadavku POST

# 4. Kompilace užitečného zatížení oznámení

Užitečné zatížení oznámení je řetězec ve formátu JSON, který bude doručen vedle tichého oznámení push. Zde je ukázka užitečného zatížení oznámení tichého push.

{"to": "[your-fcm-token]", "content_available": true, "data": {"some-key": "some-value"}}

Nezapomeňte nahradit [váš-fcm-token] tokenem FCM, který jste získali právě teď. To pomůže serveru Firebase identifikovat příjemce tichého oznámení push.

Nezapomeňte, že dvojice „content_available“: true key-value je povinná. Je to identifikátor, který ukazuje, že toto oznámení je tichým oznámením push. Bez tohoto nebude vaše zařízení moci přijímat tiché oznámení push.

Datový klíč v užitečném zatížení je volitelný, můžete jej však použít k zahrnutí jakýchkoli dalších dat, která chcete dodat vedle tichého oznámení push.

Po dokončení kompilace užitečného zatížení pokračujte a nastavte ji jako tělo požadavku POST.

Tělo požadavku POST

Díky tomu je váš POST požadavek připraven a měl by být schopen doručit tiché oznámení push do vašeho zařízení iOS.

V další části se rychle podíváme, jak nakládat s užitečným zatížením přijatého oznámení push.

Manipulace s užitečným zatížením oznámení tichého push

Když iOS přijme oznámení push, bude vyvolána aplikace (_: didReceiveRemoteNotification: fetchCompletionHandler :) metoda delegate.

Fragment kódu níže ukazuje, jak můžete extrahovat data z užitečného zatížení oznámení.

Všimněte si, že musíte zavolat obslužný program dokončení, abyste mohli informovat systém po dokončení operace na pozadí.

Důležité poznámky

Pokud ve svých aplikacích plánujete používat tiché oznámení push, existuje několik bodů, které jsou velmi důležité, a myslím, že by o tom měli vědět všichni vývojáři.

  1. Aplikace (_: didReceiveRemoteNotification: fetchCompletionHandler :) delegate metoda se stále spustí, i když je aplikace v popředí.
  2. Tiché oznámení push probudí ukončenou aplikaci. V důsledku toho bude spuštěna také metoda delegování aplikace (_: didFinishLaunchingWithOptions :) a metoda viewDidLoad () výchozího řadiče pohledu.
  3. Operace na pozadí spuštěná tichým oznámením push bude mít zhruba 30 sekund času provedení.

Další čtení

Pokud se chcete dozvědět více o simulaci oznámení push v simulátoru iOS, můžete se podívat na tento článek.

Simulace oznámení push v simulátoru iOS

Doufám, že vám tento článek pomůže. Neváhejte se podělit o své myšlenky v sekci komentářů níže.

Sledujte mě na Twitteru pro další články týkající se vývoje iOS.

Děkuji za přečtení.

Původně zveřejněno na https://swiftsenpai.com 21. března 2020.