Push oznámení Tutorial: Začínáme

aktualizace Poznámka: Chuck Krutsinger aktualizoval tento návod pro Xcode 11 a Swift 5. Jack Wu napsal původní tutoriál a Keegan Rush napsal dřívější aktualizaci.

vývojáři iOS rádi představují lidi, kteří neustále používají svou úžasnou aplikaci. Uživatelé však samozřejmě budou muset aplikaci někdy zavřít a provádět další činnosti. Prádlo se samo nesloží, víte! Naštěstí push oznámení umožňují vývojářům oslovit uživatele a provádět malé úkoly-i když uživatelé aplikaci aktivně nepoužívají! V tomto tutoriálu se dozvíte, jak:

  • nakonfigurovat aplikaci tak, aby dostávala oznámení push.
  • zobrazte je svým uživatelům nebo provádějte jiné úkoly.

Začínáme

Co jsou push notifikace? Jsou to zprávy odeslané do vaší aplikace prostřednictvím Apple Push Notification service (APNs), i když vaše aplikace není spuštěna nebo telefon spí. Na co můžete použít oznámení push?

  • zobrazí krátkou textovou zprávu nazvanou upozornění, která upozorňuje na něco nového ve vaší aplikaci.
  • přehrát zvuk oznámení.
  • Nastavte číslo odznaku na ikonu aplikace, aby uživatel věděl, že jsou nové položky.
  • Poskytněte akce, které může uživatel podniknout bez otevření aplikace.
  • zobrazit přílohu média.
  • buďte zticha, což umožňuje aplikaci provádět úkol na pozadí.
  • seskupte oznámení do vláken.
  • upravit nebo odebrat Doručená oznámení.
  • spusťte kód pro změnu oznámení před jeho zobrazením.
  • zobrazit vlastní, interaktivní uživatelské rozhraní pro vaše oznámení.
  • a pravděpodobně více.

tento tutoriál pokrývá mnoho z těchto použití, které vám pomohou začít vytvářet oznámení push ve vašich aplikacích. K dokončení tohoto tutoriálu budete potřebovat následující:

  • Xcode 11.4 nebo novější. Dřívější verze Xcode nepodporují push oznámení pomocí simulátoru.
  • členství v programu pro vývojáře Apple, aby bylo možné kompilovat aplikaci s oprávněním Push Notifications.
Poznámka: později v tutoriálu se dozvíte, jak posílat oznámení push na skutečné zařízení při odesílání na skutečné zařízení.

Chcete-li odesílat a přijímat oznámení push, musíte provést tři hlavní úkoly:

  1. nakonfigurujte aplikaci a zaregistrujte ji pomocí APN.
  2. odešlete oznámení push ze serveru na konkrétní zařízení prostřednictvím APN. Budete simulovat, že s Xcode.
  3. použijte zpětné volání v aplikaci pro příjem a zpracování oznámení push.

odesílání oznámení push je odpovědností komponenty serveru vaší aplikace. Mnoho aplikací používá k odesílání oznámení push třetí strany. Jiní používají vlastní řešení nebo populární knihovny (například Houston). Dotknete se pouze odesílání push zpráv v tomto tutoriálu,takže se podívejte, kam jít odtud? sekce stavět na své znalosti push oznámení.

Chcete-li začít, stáhněte si Projekt wendercast starter pomocí tlačítka Stáhnout materiály v horní nebo dolní části tohoto tutoriálu. WenderCast je zdrojem pro každého raywenderlich.com podcasty a nejnovější zprávy.

ve složce starter otevřete WenderCast.xcodeproj. V navigátoru projektu vyberte WenderCast a poté vyberte cíl WenderCast. Na kartě Obecné & Možnosti vyberte svůj vývojový tým. Stavět a spustit v simulátoru.

Vytvořit a spustit startér projektu

WenderCast zobrazí seznam raywenderlich.com podcasty a umožňuje uživatelům hrát je. Ale nedává uživatelům vědět, kdy je k dispozici nový podcast a karta zprávy je prázdná! Tyto problémy brzy vyřešíte pomocí push notifikací.

odesílání a přijímání oznámení Push

konfigurace aplikace

bezpečnost je pro oznámení push velmi důležitá. Nechcete, aby někdo jiný posílat oznámení push svým uživatelům prostřednictvím aplikace. Budete muset provést několik úkolů, abyste nakonfigurovali aplikaci tak, aby bezpečně dostávala oznámení push.

povolení služby Push Notification

nejprve musíte změnit identifikátor svazku. V Xcode zvýrazněte WenderCast v navigátoru projektu a poté vyberte cíl WenderCast. Vyberte Obecné a poté změňte identifikátor svazku na něco jedinečného, aby Apple push notification server mohl nasměrovat tlaky na tuto aplikaci.

změňte identifikátor svazku

Dále musíte ve svém účtu vývojáře vytvořit ID aplikace a povolit nárok na oznámení push. Xcode má jednoduchý způsob, jak to udělat: S WenderCast cíl stále vybrán, klepněte na tlačítko Podpis & Možnosti a poté klikněte na tlačítko + Schopnosti tlačítko. Do pole Filtr zadejte „push“ a stiskněte klávesu Enter.

Přidat push oznámení schopnosti

Po přidání push oznámení nároku, váš projekt by měl vypadat takto:

Projekt s push oznámení nároku

Poznámka: Pokud se nějaké problémy vyskytují, navštivte Apple Developer Center. Možná budete muset souhlasit s novou licencí pro vývojáře, kterou Apple rád aktualizuje, a zkuste to znovu.

V zákulisí to vytvoří ID aplikace a poté k němu přidá nárok na oznámení push. Můžete se přihlásit do Apple Developer Center pro ověření tohoto:

ID Aplikace zobrazující konfigurace push oznámení nároku

to je vše, co potřebujete nakonfigurovat pro teď. Jste připraveni začít vylepšovat aplikaci.

žádost o povolení oznámení uživatele

existují dva kroky, které provedete pro registraci oznámení push. Nejprve musíte získat oprávnění uživatele k zobrazování oznámení. Poté můžete zařízení zaregistrovat a přijímat vzdálená (push) oznámení. Pokud vše půjde dobře, systém vám poskytne token zařízení, který si můžete představit jako „adresu“ tohoto zařízení.

ve Wendercastu se zaregistrujete pro oznámení push ihned po spuštění aplikace. Nejprve požádejte o oprávnění uživatele.

otevřít AppDelegate.swift a přidejte následující do horní části souboru:

import UserNotifications

Poté přidejte následující metodu konci AppDelegate:

func registerForPushNotifications() { //1 UNUserNotificationCenter.current() //2 .requestAuthorization(options: ) { granted, _ in //3 print("Permission granted: \(granted)") }}

Co tento kód dělá:

  1. UNUserNotificationCenter zpracovává všechna oznámení související s činností v aplikaci, včetně push oznámení.
  2. vyvoláte requestAuthorization(options:completionHandler:) Chcete-li (uhodli jste) požádat o oprávnění k zobrazení oznámení. Předané options označují typy oznámení, které má aplikace používat – zde požadujete upozornění — zvuk a odznak.
  3. obslužný program dokončení obdrží Bool, který indikuje, zda byla autorizace úspěšná. V takovém případě jednoduše vytisknete výsledek.
Poznámka: volby, které předáte requestAuthorization(options:completionHandler:), mohou obsahovat libovolnou kombinaci UNAuthorizationOptions:

  • .odznak: zobrazí číslo v rohu ikony aplikace.
  • .zvuk: přehrát zvuk.
  • .upozornění: zobrazí textové upozornění.
  • .carPlay: zobrazení oznámení v CarPlay.
  • .prozatímní: Post non-přerušení oznámení. Uživatel nedostane žádost o povolení, pokud použijete pouze tuto možnost, ale vaše oznámení se zobrazí pouze tiše v oznamovacím centru.
  • .providesAppNotificationSettings: ukazují, že aplikace má své vlastní uživatelské rozhraní pro nastavení oznámení.
  • .criticalAlert: ignorovat přepínač ztlumení a nerušit. K použití této možnosti budete potřebovat zvláštní nárok od společnosti Apple, protože je určen pouze pro velmi zvláštní případy použití.

přidejte následující blízko konce application(_:didFinishLaunchingWithOptions:), těsně před return:

registerForPushNotifications()

Volat registerForPushNotifications() zde zajišťuje, že aplikace se pokusí zaregistrovat tlačit oznámení, kdykoli je spuštěn.

sestavení a spuštění. Po spuštění aplikace byste měli obdržet výzvu, která požádá o povolení k zasílání oznámení.

výzva k oznámení

klepněte na Povolit a poof! Aplikace nyní může zobrazovat oznámení. Skvělé! Ale co když uživatel odmítne oprávnění? Přidat tuto metodu uvnitř AppDelegate:

func getNotificationSettings() { UNUserNotificationCenter.current().getNotificationSettings { settings in print("Notification settings: \(settings)") }}

nejprve jste zadali požadované nastavení. Tato metoda vrací nastavení, která uživatel udělil. Prozatím je tisknete, ale brzy se sem vrátíte, abyste s tím udělali více.

V registerForPushNotifications(), nahradit volání requestAuthorization(options:completionHandler:) s následující:

UNUserNotificationCenter.current() .requestAuthorization( options: ) { granted, _ in print("Permission granted: \(granted)") guard granted else { return } self?.getNotificationSettings() }

Jste přidali volání getNotificationSettings() v dokončení handler. To je důležité, protože uživatel může kdykoli přejít do aplikace Nastavení a změnit svá oprávnění k oznámení. guard se vyhýbá volání v případech, kdy nebylo uděleno povolení.

Registrace s APNs

Nyní, když máte oprávnění, zaregistrujete se pro vzdálená oznámení!

V getNotificationSettings(), přidejte následující pod print uvnitř uzávěr:

guard settings.authorizationStatus == .authorized else { return }DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications()}

Zde si ověřte, zda authorizationStatus.authorized: uživatel udělil oprávnění oznámení. Pokud ano, zavoláte UIApplication.shared.registerForRemoteNotifications() a zahájíte registraci pomocí služby Apple Push Notification. Musíte to zavolat v hlavním vlákně, nebo obdržíte varování za běhu.

Přidejte následující na konec AppDelegate:

func application( _ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) } let token = tokenParts.joined() print("Device Token: \(token)")}

Tato metoda se nazývá iOS kdykoliv zavolat, aby registerForRemoteNotifications() uspěje. Kód může vypadat krypticky, ale jednoduše vezme přijatý deviceToken a převede jej na řetězec. Token zařízení je plodem tohoto procesu. Je poskytována APNs a jednoznačně identifikuje tuto aplikaci na tomto konkrétním zařízení.

při odesílání oznámení push server používá tokeny jako „adresy“ pro doručení na správná zařízení. V aplikaci, měli byste nyní poslat tento token na váš server uložit a použít později pro odesílání oznámení.

přidejte následující:

func application( _ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { print("Failed to register: \(error)")}

Tato metoda se nazývá iOS, pokud registerForRemoteNotifications() selže. Právě tisknete chybu pro tuto chvíli.

to je ono! Stavět a běžet. Protože jste na simulátoru, uvidíte chybu Failed to register. To můžete prozatím ignorovat. Později, když spustíte na skutečném zařízení, měli byste obdržet token na výstupu konzoly. Zde je příklad:

příklad tokenu zařízení

Poznámka: existuje několik důvodů, proč může registrace selhat. Nejčastěji je to proto, že ID aplikace nebylo správně nakonfigurováno. Chybová zpráva obecně poskytuje dobrou nápovědu k tomu, co se děje.

odeslání simulovaného oznámení Push

použijte textový editor k vytvoření souboru s názvem První.apn, které předáte nástroji Xcode simctl. Vložte následující text JSON a uložte soubor.

{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

struktura tohoto JSON bude vysvětlena v další části. Trpělivost, kobylko.

Sestavte a spusťte aplikaci znovu na simulátoru, pak pozadí aplikace nebo zamknout zařízení. Aplikace ještě není schopna zpracovat oznámení push v popředí.

Chcete-li používat simctl, musíte znát identifikátor zařízení pro simulátor, ve kterém aplikaci používáte. Pokud je v simulátoru spuštěno pouze jedno zařízení, můžete místo identifikátoru použít bootované. Chcete-li získat identifikátor, v Xcode vyberte Windows ▸ zařízení a simulátory, poté vyberte kartu simulátory v horní části a ze seznamu vlevo vyberte simulátor, který používáte. Pomocí myši zkopírujte identifikátor. Možná budete muset rozšířit dialogové okno, abyste jej viděli úplně.

Hledání zařízení identifikátor v Xcode

Otevřete Terminál aplikaci a přejděte do adresáře, kam jste uložili první.apn. Poté zadejte následující příkaz pomocí bootovaného nebo identifikátoru zařízení z Xcode místo device_identifier: xcrun simctl push device_identifier bundle_identifier first.apn. Nahradit device_identifier s identifikátorem prostředku jste zkopírovali z Xcode a nahradit bundle_identifier s app bundle identifier — ten, který jste použili při prvním nastavení projektu. Zde je příklad:

Pomocí xcrun simctl poslat push oznámení z terminálu

Spustit příkaz, a uvidíte, push oznámení se objeví na simulátoru!

na simulátoru se zobrazí oznámení Push

klepnutím na oznámení spustíte aplikaci.

aplikace spuštěna z oznámení push

není to v pohodě? :]

při Pohledu na Základní Push Oznámení

Před můžete přejít na manipulaci push oznámení, podívejte se na tělo oznámení poslal jsi:

{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

náklad je JSON slovník, který obsahuje alespoň jednu položku, aps, což je také slovník. V tomto příkladu aps obsahuje pole alertsoundlink_url. Když zařízení obdrží toto oznámení push, zobrazí se výstražné zobrazení s textem “ Breaking News!“a hraje standardní zvukový efekt.

link_url je vlastně vlastní pole. Můžete přidat vlastní pole do užitečného zatížení, jako je tento, a budou doručeny do vaší aplikace. Vzhledem k tomu, že nejste manipulaci uvnitř aplikace ještě, tento klíč / hodnota dvojice v současné době nic nedělá.

korekce: Bystrý čtenář poukázal na to, že Apple v dokumentaci uvádí, že vlastní obsah, například link_url by měl být na úrovni peer aps položku slovníku, spíše než uvnitř. Stále to funguje, pokud jej umístíte dovnitř, ale vždy doporučujeme dodržovat dokumentaci společnosti Apple a opravíme to v naší další aktualizaci tohoto tutoriálu.

k dispozici je osm vestavěných klíčů, které můžete přidat do slovníku aps (další informace naleznete v oficiálním odkazu na klíč Payload):

  • alert: Může to být řetězec, jako v předchozím příkladu, nebo slovník. Jako slovník může lokalizovat text nebo změnit další aspekty oznámení.
  • odznak: Toto je číslo, které se zobrazí v rohu ikony aplikace. Odznak můžete odstranit nastavením na 0.
  • zvuk: název souboru vlastního zvukového oznámení umístěného v aplikaci. Musí být kratší než 30 sekund.
  • thread-id: použijte tento klíč pro skupinové oznámení.
  • Kategorie: definuje kategorii oznámení, která se používá k zobrazení vlastních akcí v oznámení. Brzy to prozkoumáte.
  • content-available: nastavením tohoto klíče na 1 se oznámení push ztichne. Dozvíte se o tom v sekci tichých oznámení Push níže.
  • mutable-content: nastavením tohoto klíče na 1 může vaše aplikace upravit oznámení před jeho zobrazením.
  • target-content-id: toto je identifikátor předávaného okna.

mimo ně můžete přidat tolik vlastních dat, kolik chcete, Pokud užitečné zatížení nepřesáhne 4 096 bajtů.

jakmile budete mít dost zábavy vyzkoušet tyto možnosti a odesílání oznámení push do vašeho simulátoru, přejděte na další část!

Zpracování Push Oznámení

V této části se dozvíte, jak provádět akce, pokud vaše aplikace přijímá oznámení a když uživatelé, klepněte na ně.

Pochopení toho, Co se Stane, Když Obdržíte Oznámení Push

Když se vaše aplikace obdrží oznámení o push, iOS volání metody v UIApplicationDelegate.

Budete muset zvládnout oznámení odlišně v závislosti na tom, co stát vaše aplikace je v, kdy je oznámení obdržel:

  • Pokud vaše aplikace nebyla spuštěna a uživatel spustí klepnutím na oznámení push, iOS předá oznámení do vaší aplikace v launchOptionsapplication(_:didFinishLaunchingWithOptions:).
  • Pokud vaše aplikace běží v popředí nebo na pozadí, systém upozorní vaši aplikaci voláním application(_:didReceiveRemoteNotification:fetchCompletionHandler:). Když uživatel otevře aplikaci klepnutím na oznámení push, iOS může tuto metodu znovu zavolat, takže můžete aktualizovat uživatelské rozhraní a zobrazit relevantní informace.

v prvním případě WenderCast vytvoří položku Zprávy a otevře se přímo na kartě Zprávy. V AppDelegate.swift, přidejte následující kód na konec application(_:didFinishLaunchingWithOptions:), jen před návratem prohlášení:

// Check if launched from notificationlet notificationOption = launchOptions?// 1if let notification = notificationOption as? , let aps = notification as? { // 2 NewsItem.makeNewsItem(aps) // 3 (window?.rootViewController as? UITabBarController)?.selectedIndex = 1}

Toto je to, co děláš.

  1. Zkontrolujte, zda je hodnota pro UIApplication.LaunchOptionsKey.remoteNotification existuje v launchOptions. Pokud ano, pak byla vaše aplikace spuštěna z oznámení. To bude obsahovat užitečné zatížení oznámení push, které jste odeslali.
  2. protože existuje slovník aps, vytvořte s ním NewsItem.
  3. změňte vybranou kartu Ovladače karty na sekci Zprávy.

Chcete-li to otestovat, musíte upravit schéma Wendercastu. Nejprve vytvořte a spusťte instalaci nejnovějšího kódu na simulátoru. Poté klikněte na schéma WenderCast a vyberte Upravit schéma…:

Upravit Režim

Zvolte Spustit z postranního panelu, pak v záložce Info vyberte Čekat na spustitelný soubor, aby být spuštěn:

Vybrat si počkat na spustitelný soubor, aby být spuštěn

Tato možnost bude ladicí program čekat na aplikace, aby být spuštěn poprvé po instalaci připojit k ní.

sestavení a spuštění. Po dokončení instalace odešlete další nejnovější zprávy pomocí xcrun simctl jako dříve. Klepněte na oznámení a aplikace se otevře pro novinky:

Aplikace otevřel na zprávy záložka

zvládnout situaci, kde vaše aplikace běží, když push oznámení obdržel, přidejte následující AppDelegate:

func application( _ application: UIApplication, didReceiveRemoteNotification userInfo: , fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { guard let aps = userInfo as? else { completionHandler(.failed) return } NewsItem.makeNewsItem(aps)}

Tento se snaží extrahovat aps z dodaného userInfo objekt a, pokud bude úspěšný, vytvoří nový NewsItem.

vzhledem k tomu, že iOS volá tuto metodu, když je aplikace spuštěna, musíte změnit schéma zpět na automatické spuštění aplikace, abyste ji otestovali. V editoru schématu v části Spustit vyberte možnost Automaticky.

sestavení a spuštění. Udržujte aplikaci spuštěnou v popředí a na kartě Zprávy. Pošlete další oznámení push zpráv a sledujte, jak se objeví ve zdroji:

druhé oznámení push zobrazené na kartě Zprávy

to je vše! Vaše aplikace nyní může magicky přijímat nejnovější zprávy, jak se to stane. :]

Poznámka: není zaručeno, že oznámení Push dorazí. To je v pořádku pro WenderCast, protože mít úplný seznam zpráv není pro tuto aplikaci příliš důležité. Obecně byste však neměli používat oznámení push jako jediný způsob doručování obsahu. Místo toho by oznámení push měla signalizovat, že je k dispozici nový obsah, a nechat aplikaci stáhnout obsah ze zdroje (například z REST API).

Práce S Žalovatelné Oznámení

Žalovatelné oznámení vám umožní přidat vlastní tlačítka na oznámení sám. Možná jste si toho všimli v e-mailových oznámeních nebo tweetech, které vám umožňují „odpovědět“ nebo „oblíbené“ na místě.

vaše aplikace může definovat žalovatelné oznámení, když se zaregistrujete pro oznámení pomocí kategorií. Každá kategorie oznámení může mít několik přednastavených vlastních akcí.

po registraci může váš server nastavit kategorii oznámení push. Odpovídající akce budou uživateli k dispozici po přijetí.

pro WenderCast definujete kategorii zpráv s vlastní akcí s názvem View. Tato akce umožní uživatelům zobrazit novinový článek v aplikaci, pokud se rozhodnou.

V registerForPushNotifications(), vložte následující těsně pod stráž a nad zavolat, aby getNotificationSettings():

// 1let viewAction = UNNotificationAction( identifier: Identifiers.viewAction, title: "View", options: )// 2let newsCategory = UNNotificationCategory( identifier: Identifiers.newsCategory, actions: , intentIdentifiers: , options: )// 3UNUserNotificationCenter.current().setNotificationCategories()

prochází to, krok-za-krokem:

  1. vytvořte novou akci oznámení s pohledem na název na tlačítku, které po spuštění otevře aplikaci v popředí. Akce má odlišný identifikátor, který iOS používá k rozlišení mezi ostatními akcemi ve stejném oznámení.
  2. Definujte kategorii zpráv, která bude obsahovat akci zobrazení. To má také odlišný identifikátor, který vaše užitečné zatížení bude muset obsahovat určit, že oznámení push patří do této kategorie.
  3. zaregistrujte nové akční oznámení voláním setNotificationCategories.

Sestavte a spusťte aplikaci a zaregistrujte nová nastavení oznámení.

Pozadí app a pak odeslat následující užitečné zatížení pomocí xcrun simctl nástroj:

{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}

, Když se zobrazí oznámení, vytáhněte se na to odhalit Zobrazit akce:

Push oznámení s cílem akce odhalila

Pěkné! Klepnutím na zobrazení spustíte WenderCast, ale zatím to nedělá nic vzrušujícího. Chcete – li ji zobrazit, musíte v delegátovi provést další zpracování událostí.

zpracování akcí oznámení

kdykoli se spustí akce oznámení, UNUserNotificationCenter informuje svého delegáta. Zpět v AppDelegate.swift, přidejte následující třídu rozšíření na konec souboru:

// MARK: - UNUserNotificationCenterDelegateextension AppDelegate: UNUserNotificationCenterDelegate { func userNotificationCenter( _ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void ) { // 1 let userInfo = response.notification.request.content.userInfo // 2 if let aps = userInfo as? , let newsItem = NewsItem.makeNewsItem(aps) { (window?.rootViewController as? UITabBarController)?.selectedIndex = 1 // 3 if response.actionIdentifier == Identifiers.viewAction, let url = URL(string: newsItem.link) { let safari = SFSafariViewController(url: url) window?.rootViewController? .present(safari, animated: true, completion: nil) } } // 4 completionHandler() }}

Toto je zpětné volání dostanete, když aplikace se otevře, protože vlastní akce. Může to vypadat, že se toho hodně děje, ale není toho moc nového:

  1. získejteuserInfo slovník.
  2. Vytvořte NewsItem ze slovníku aps a přejděte na kartu zprávy.
  3. zkontrolujte actionIdentifier. Pokud se jedná o akci „Zobrazit“ a odkaz je platnou adresou URL, zobrazí odkaz v SFSafariViewController.
  4. zavolejte obslužnou rutinu dokončení, kterou vám systém předá.

je tu poslední bit: musíte nastavit delegáta na UNUserNotificationCenter. Přidejte tento řádek do horní části application(_:didFinishLaunchingWithOptions:):

UNUserNotificationCenter.current().delegate = self

sestavení a spuštění. Zavřete aplikaci znovu, a pak poslat další zprávy oznámení následující užitečné zatížení:

{ "aps": { "alert": "New Posts!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}

strhnout oznamovací a klepněte na Zobrazit akce, a uvidíte, WenderCast přítomen Safari View controller hned poté, co na trh:

Oznámení URL odkazu otevřít v Safari view

Gratulujeme, jste implementovali žalovatelné oznámení! Pošlete několik dalších a zkuste oznámení otevřít různými způsoby, abyste zjistili, jak se chová.

Odeslání na Reálném Zařízení

Pokud nechcete poslat push oznámení na reálném zařízení, nebo nemusíte silent push oznámení, můžete tuto část přeskočit a jít, Kam Jít Odsud?

Pokud však chcete získat představu o tom, jak posílat oznámení push na skutečné zařízení a vyzkoušet silent push, musíte provést nějaké další nastavení. Stáhněte si nástroj PushNotifications. Tento nástroj budete používat k odesílání oznámení na skutečné zařízení. Chcete-li jej nainstalovat, Postupujte podle pokynů v části Jak nainstalovat. Zvláštní pozornost věnujte tomu, jak aplikaci otevřít, protože pro spuštění tohoto nástroje budete muset změnit některá nastavení.

zamiřte do Apple Developer Member Center a přihlaste se.

odesílání push notifikací vyžaduje ověřovací klíč. V centru členů vyberte certifikáty, identifikátory & profily a v levém podokně najděte klíče. Vpravo od názvu klíče je tlačítko+. Kliknutím na něj vytvoříte nový klíč.

dejte klíči název, například Push notification Key. V části klíčové služby vyberte Apple Push Notifications service (APNs).

příklad push notifikační klíč

klikněte na Pokračovat a poté se zaregistrujte na další obrazovce a vytvořte nový klíč. Klepněte Na Stáhnout. Stažený soubor bude mít název něco jako AuthKey_4SVKWF966R. p8. Sledujte tento soubor-budete jej potřebovat k odeslání oznámení! 4svkwf966r část názvu souboru je ID klíče. Budete také potřebovat toto.

poslední kousek, který potřebujete, je ID vašeho týmu. Přejděte na stránku s podrobnostmi o členství v členském centru a najděte ji.

udělal jsi to! S novým klíčem jste nyní připraveni odeslat první oznámení push! Potřebuješ ještě jednu věc.

Spusťte aplikaci na skutečném zařízení a zkopírujte Token zařízení z konzoly debuggeru a připravte jej.

spusťte PushNotifications a proveďte následující kroky:

  1. v části ověřování vyberte Token.
  2. klikněte na tlačítko Vybrat P8 a vyberte .soubor p8 z předchozí části.
  3. do příslušných polí zadejte své ID klíče a ID týmu.
  4. v části tělo zadejte ID balíčku aplikace a token zařízení.
  5. změňte tělo požadavku tak, aby vypadalo takto:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

klikněte na tlačítko Odeslat v PushNotifications.

Push oznámení tester

měli Byste obdržet push oznámení:

Vaše První Push Oznámení

řešení Potíží Běžné Problémy

Zde je několik problémů se můžete setkat:

  • Někteří dorazí oznámení, ale ne všechny: Pokud posíláte mnoho push oznámení, současně ale dostanete jen málo, nebojte se! To je záměrné. APNs udržuje QoS (Quality of Service) fronty pro každé zařízení. Velikost této fronty je 1, takže pokud odešlete více oznámení, poslední oznámení je přepsáno.
  • problém s připojením k oznamovací službě Push: jednou z možností může být, že firewall blokuje porty používané APN. Ujistěte se, že tyto porty odblokujete.

pomocí tichých oznámení Push

Tichá oznámení push mohou vaši aplikaci probudit tiše a provádět některé úkoly na pozadí. WenderCast může tuto funkci použít k Tichému obnovení seznamu podcastů.

se správnou komponentou serveru To může být velmi efektivní. Vaše aplikace nebude muset neustále dotazovat data. Můžete mu poslat tiché oznámení push, kdykoli jsou k dispozici nová data.

Chcete-li začít, znovu vyberte cíl WenderCast. Nyní klikněte na podepisování & karta možnosti a přidejte možnosti režimů pozadí. Poté zaškrtněte možnost vzdálená oznámení:

zkontrolujte možnost vzdálená oznámení pro režimy na pozadí oprávnění

nyní se vaše aplikace probudí na pozadí, když obdrží jedno z těchto oznámení push.

V AppDelegate.swift, najít application(_:didReceiveRemoteNotification:fetchCompletionHandler:). Nahradit volání NewsItem.makeNewsItem() s následující:

// 1if aps as? Int == 1 { let podcastStore = PodcastStore.sharedStore // 2 podcastStore.refreshItems { didLoadNewItems in // 3 completionHandler(didLoadNewItems ? .newData : .noData) }} else { // 4 NewsItem.makeNewsItem(aps) completionHandler(.newData)}

Jít přes kód:

  1. zkontrolujte, zda content-available je nastavena na 1. Pokud ano, jedná se o tiché oznámení.
  2. obnovíte seznam podcastů, což je asynchronní síťové volání.
  3. Po dokončení aktualizace zavolejte obslužnou rutinu dokončení a dejte systému vědět, zda aplikace načte nová data.
  4. Pokud to není silent oznámení, pak je to novinka, takže si zprávy položky.

nezapomeňte zavolat obslužnou rutinu dokončení s upřímným výsledkem. Systém měří spotřebu baterie a čas, který vaše aplikace používá na pozadí, a v případě potřeby může aplikaci škrtit.

to je vše, co je k tomu. Chcete-li jej otestovat, sestavit a spustit, popředí aplikace a tlačit následující užitečné zatížení pomocí nástroje PushNotifications:

{ "aps": { "content-available": 1 }}

Pokud vše půjde dobře, nic by se nemělo stát, pokud do vzdálené databáze nebyl právě přidán nový podcast. Chcete-li potvrdit, že kód běžel podle očekávání, nastavte zarážku v application(_:didReceiveRemoteNotification:fetchCompletionHandler:) a projděte ji po odeslání oznámení.

kam jít odtud?

Gratulujeme! Dokončili jste tento tutoriál a učinili jste WenderCast plně vybavenou aplikací s upozorněním push!

dokončený projekt si můžete stáhnout pomocí tlačítka Stáhnout materiály v horní nebo dolní části tohoto tutoriálu.

Chcete se ponořit hlouběji do všeho, co můžete dělat s push notifikacemi, jako je vytváření vlastních UI a odesílání kritických upozornění? Naše Push Notifications by Tutorials book vás naučí pokročilé funkce push notifikací.

dalším zdrojem je výukový program Push Notifications pro iOS: Rich Push Notifications tutorial.

přestože oznámení push jsou důležitou součástí moderních aplikací, je také velmi běžné, že uživatelé odmítnou oprávnění k vaší aplikaci, pokud oznámení přeháníte. Ale s promyšleným designem, push oznámení může udržet své uživatele vracet do aplikace znovu a znovu!

Roztomilé kočky oznámení bell

Tato kočka obdržel oznámení push, že jeho večeře byla připravena!

doufám, že se vám tento výukový program push notifications líbil. Máte-li jakékoli dotazy, neváhejte je nechat v diskusním fóru níže.

raywenderlich.com Týdenní

raywenderlich.com newsletter je nejjednodušší způsob, jak zůstat up-to-date na vše, co potřebujete vědět jako mobilní vývojáře.

Získejte týdenní přehled našich výukových programů a kurzů a získejte bezplatný podrobný e-mailový kurz jako bonus!

Průměr

4.9/5

Přidat hodnocení pro tento obsah

přihlaste se pro přidání hodnocení

17 hodnocení

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *