Push Notifications Tutorial: komma igång

Update Obs: Chuck Krutsinger uppdaterade denna handledning för Xcode 11 och Swift 5. Jack Wu skrev den ursprungliga handledningen, och Keegan Rush skrev en tidigare uppdatering.

iOS-utvecklare älskar att föreställa sig att människor använder sin fantastiska app hela tiden. Men naturligtvis måste användarna ibland stänga appen och utföra andra aktiviteter. Tvätten viks inte själv, du vet! Lyckligtvis tillåter push-meddelanden utvecklare att nå användare och utföra små uppgifter — även när användare inte aktivt använder en app! I den här handledningen lär du dig hur du:

  • konfigurera din app för att ta emot push-meddelanden.
  • visa dem för dina användare eller utföra andra uppgifter.

komma igång

vad är push-meddelanden? De är meddelanden som skickas till din app via Apple Push Notification service (APN) även om din app inte körs eller telefonen sover. Vad kan du använda push-meddelanden till?

  • visa ett kort textmeddelande, kallat en varning, som uppmärksammar något nytt i din app.
  • spela upp ett meddelande ljud.
  • ange ett märkesnummer på appens ikon för att låta användaren veta att det finns nya objekt.
  • ge åtgärder som användaren kan vidta utan att öppna appen.
  • visa en mediebilaga.
  • var tyst, så att appen kan utföra en uppgift i bakgrunden.
  • gruppmeddelanden i trådar.
  • redigera eller ta bort levererade meddelanden.
  • kör kod för att ändra ditt meddelande innan du visar det.
  • visa ett anpassat, interaktivt användargränssnitt för din anmälan.
  • och förmodligen mer.

denna handledning täcker många av dessa användningsområden för att hjälpa dig att komma igång med att skapa push-meddelanden i dina appar. För att slutföra denna handledning behöver du följande:

  • Xcode 11.4 eller senare. Tidigare versioner av Xcode stöder inte push-meddelanden med simulatorn.
  • ett Apple Developer Program medlemskap för att kunna sammanställa appen med Push-meddelanden rätt.
Obs: senare i handledningen lär du dig hur du skickar push-meddelanden till en riktig enhet när du skickar till en riktig enhet.

för att skicka och ta emot push-meddelanden måste du utföra tre huvuduppgifter:

  1. konfigurera din app och registrera den med APN.
  2. skicka ett push-meddelande från en server till specifika enheter via APN. Du simulerar det med Xcode.
  3. använd callbacks i appen för att ta emot och hantera push-meddelanden.

skicka push-meddelanden är ett ansvar för appens serverkomponent. Många appar använder tredje part för att skicka push-meddelanden. Andra använder anpassade lösningar eller populära bibliotek (som Houston). Du kommer bara att beröra att skicka push-meddelanden i den här handledningen, så se till att kolla vart du ska gå härifrån? avsnitt för att bygga vidare på din kunskap om push-meddelanden.

för att komma igång, ladda ner WenderCast starter-projektet med knappen Hämta Material längst upp eller längst ner i denna handledning. WenderCast är allas gå till källa för raywenderlich.com podcasts och nyheter.

i startmappen öppnar du WenderCast.xcodeproj. Välj WenderCast i projektnavigatorn och välj sedan WenderCast-målet. På fliken Allmänt& funktioner väljer du ditt utvecklingsteam. Bygg och kör i en simulator.

Bygg och kör startprojektet

WenderCast visar en lista med raywenderlich.com podcasts och låter användare spela dem. Men det låter inte användarna veta när en ny podcast är tillgänglig och fliken Nyheter är tom! Du kommer snart att åtgärda dessa problem med kraften i push-meddelanden.

skicka och ta emot Push-meddelanden

konfigurera appen

säkerhet är mycket viktigt för push-meddelanden. Du vill inte att någon annan ska skicka push-meddelanden till dina användare via din app. Du måste utföra flera uppgifter för att konfigurera din app för att säkert ta emot push-meddelanden.

aktivera Push Notification Service

först måste du ändra bundle identifier. Markera WenderCast i projektnavigatorn i Xcode och välj sedan WenderCast-målet. Välj Allmänt och ändra sedan Bundle Identifier till något unikt så Apples push notification server kan rikta pushar till den här appen.

ändra bundle identifier

Därefter måste du skapa ett App-ID i ditt utvecklarkonto och aktivera push notification-rätten. Xcode har ett enkelt sätt att göra detta: med WenderCast-målet fortfarande valt klickar du på fliken signering & funktioner och klickar sedan på + Capability-knappen. Skriv ”push” i filterfältet och tryck på Enter.

Lägg till push notifications-funktionen

När du har lagt till push notifications-rätten ska ditt projekt se ut så här:

projekt med push-meddelanden rätt

Obs: Om några problem uppstår, besök Apple Developer Center. Du kan behöva godkänna en ny utvecklarlicens, som Apple älskar att uppdatera, och försök igen.

bakom kulisserna skapar detta App-ID och lägger sedan till push-aviseringarna. Du kan logga in på Apple Developer Center för att verifiera detta:

App ID-konfiguration som visar push-meddelanden rätt

det är allt du behöver konfigurera för nu. Du är redo att börja förbättra appen.

be om användarmeddelanden tillstånd

det finns två steg du tar för att registrera dig för push-meddelanden. Först måste du få användarens tillåtelse att visa meddelanden. Sedan kan du registrera enheten för att ta emot fjärrmeddelanden (push). Om allt går bra kommer systemet sedan att ge dig en enhetstoken, som du kan tänka på som en ”adress” till den här enheten.

i WenderCast registrerar du dig för push-meddelanden direkt efter att appen har lanserats. Be om användarbehörigheter först.

Öppna AppDelegate.swift och Lägg till följande till toppen av filen:

import UserNotifications

lägg sedan till följande metod i slutet av AppDelegate:

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

vad denna kod gör:

  1. UNUserNotificationCenter hanterar alla anmälningsrelaterade aktiviteter i appen, inklusive push-meddelanden.
  2. du åberopar requestAuthorization(options:completionHandler:) till (du gissade det) begär behörighet att visa aviseringar. Det godkända options ange vilka typer av meddelanden du vill att din app ska använda — här begär du varning, ljud och märke.
  3. slutföraren får en Bool som anger om auktoriseringen lyckades. I det här fallet skriver du helt enkelt ut resultatet.
Obs: alternativen du skickar till requestAuthorization(options:completionHandler:) kan innehålla valfri kombination av UNAuthorizationOptions:

  • .badge: visa ett nummer på hörnet av appens ikon.
  • .ljud: spela upp ett ljud.
  • .varning: visa en textmeddelande.
  • .carPlay: visa meddelanden i CarPlay.
  • .provisorisk: posta icke-avbrytande meddelanden. Användaren får inte en begäran om tillstånd om du bara använder det här alternativet, men dina meddelanden visas bara tyst i meddelandecentret.
  • .providesAppNotificationSettings: ange att appen har sitt eget användargränssnitt för meddelandeinställningar.
  • .criticalAlert: ignorera mute-omkopplaren och stör inte. Du behöver en särskild rätt från Apple att använda det här alternativet, eftersom det endast är avsett för mycket speciella användningsfall.

Lägg till följande nära slutet av application(_:didFinishLaunchingWithOptions:), strax före return :

registerForPushNotifications()

Calling registerForPushNotifications() här säkerställer att appen försöker registrera sig för push-meddelanden när som helst den lanseras.

Bygg och kör. När appen startas bör du få en prompt som ber om tillstånd att skicka meddelanden till dig.

fråga om meddelanden

Tryck på Tillåt och poff! Appen kan nu visa meddelanden. Toppen! Men vad händer om användaren avvisar behörigheterna? Lägg till den här metoden inuti AppDelegate:

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

först angav du de inställningar du vill ha. Den här metoden returnerar de inställningar som användaren har beviljat. För tillfället skriver du ut dem, men du kommer snart att ringa tillbaka hit för att göra mer med detta.

iregisterForPushNotifications(), ersätt samtalet till requestAuthorization(options:completionHandler:) med följande:

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

Du har lagt till ett samtal till getNotificationSettings() I slutföringshanteraren. Detta är viktigt eftersom användaren när som helst kan gå in i appen Inställningar och ändra sina anmälningsbehörigheter. guard undviker att ringa detta samtal i fall där tillstånd inte beviljades.

registrering med APN

Nu när du har behörigheter registrerar du dig för fjärrmeddelanden!

i getNotificationSettings(), Lägg till följande under print inuti Stängningen:

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

här verifierar du authorizationStatus är .authorized: användaren har beviljat anmälningsbehörigheter. Om så är fallet ringer du UIApplication.shared.registerForRemoteNotifications() för att starta registreringen med Apple Push Notification service. Du måste ringa detta på huvudtråden, eller så får du en runtime-varning.

Lägg till följande i slutet av 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)")}

denna metod anropas av iOS när ett samtal till registerForRemoteNotifications() lyckas. Koden kan se kryptisk ut, men det tar helt enkelt ett mottaget deviceToken och konverterar det till en sträng. Enhetstoken är frukten av denna process. Det tillhandahålls av APN och unikt identifierar denna app på denna enhet.

När du skickar ett push-meddelande använder servern tokens som” adresser ” för att leverera till rätt enheter. I din app skulle du nu skicka denna token till din server för att spara och använda senare för att skicka meddelanden.

lägg nu till följande:

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

denna metod kallas av iOS omregisterForRemoteNotifications() misslyckas. Du skriver bara ut felet för nu.

det är det! Bygg och kör. Eftersom du är på en simulator ser du ett Failed to register fel. Du kan ignorera det för tillfället. Senare, när du kör på en riktig enhet, bör du få en token i konsolutgången. Här är ett exempel:

exempel på en enhetstoken

Obs: Det finns flera anledningar till att registreringen kan misslyckas. Oftast beror det på att App-ID inte var korrekt konfigurerat. Felmeddelandet ger i allmänhet en bra ledtråd för vad som är fel.

skicka en simulerad Push Notification

använd en textredigerare för att skapa en fil som heter first.apn, som du skickar till xcodes simctl-verktyg. Klistra in följande JSON-text och spara filen.

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

strukturen för denna JSON kommer att förklaras i nästa avsnitt. Tålamod, gräshoppa.

Bygg och kör appen igen på simulatorn, bakgrund sedan appen eller Lås enheten. Appen kan ännu inte bearbeta push-meddelanden i förgrunden.

för att använda simctl måste du känna till enhetsidentifieraren för simulatorn som du kör appen i. Om det bara finns en enhet som körs i simulatorn kan du använda startad istället för en identifierare. För att få identifieraren, i Xcode, väljer du Windows ozi-enheter och simulatorer, välj sedan Simulatorfliken längst upp och välj simulatorn du använder från listan till vänster. Använd musen för att kopiera identifieraren. Du kan behöva bredda dialogrutan för att se den helt.

hitta enhetsidentifieraren i Xcode

öppna Terminal-appen och byt till katalogen där du sparade först.apn. Skriv sedan in följande kommando med antingen startad eller enhetsidentifieraren från Xcode istället för device_identifier: xcrun simctl push device_identifier bundle_identifier first.apn. Ersätt device_identifiermed enhetsidentifieraren du kopierade från Xcode och ersätt bundle_identifier med appens bundle identifier — den du använde när du först konfigurerade projektet. Här är ett exempel:

använda xcrun simctl för att skicka ett push-meddelande från terminalen

Kör kommandot så ser du push-meddelandet visas på simulatorn!

Push notification visas på simulator

Tryck på meddelandet för att starta appen.

App lanserad från push-meddelandet

är det inte coolt? :]

titta på ett grundläggande Push-meddelande

innan du går vidare till hantering av push-meddelanden, ta en titt på meddelandet du har skickat:

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

nyttolasten är en JSON-ordbok som innehåller minst ett objekt, aps, som också är en ordbok. I det här exemplet innehålleraps fältenalertsound ochlink_url. När enheten tar emot denna push-anmälan visar den en varningsvy med texten ” Breaking News!”och spelar standard ljudeffekt.

link_url är faktiskt ett anpassat fält. Du kan lägga till anpassade fält till nyttolasten så här, och de kommer att levereras till din ansökan. Eftersom du inte hanterar det i appen ännu, gör det här nyckel – /värdeparet för närvarande ingenting.

korrigering: En skarpsinnig läsare påpekade att Apples dokumentation säger att anpassat innehåll somlink_url bör vara på en peer-nivå tillaps ordbokspost snarare än inuti den. Det fungerar fortfarande om du placerar det inuti, men vi föreslår alltid att du följer Apples dokumentation och kommer att korrigera detta i vår nästa uppdatering av denna handledning.

det finns åtta inbyggda nycklar som du kan lägga till iaps dictionary (se den officiella Nyttolastnyckelreferensen för mer information):

  • alert: Detta kan vara en sträng, som i föregående exempel, eller en ordbok. Som en ordbok kan den lokalisera texten eller ändra andra aspekter av meddelandet.
  • badge: detta är ett nummer som visas i hörnet av appikonen. Du kan ta bort märket genom att ställa in detta till 0.
  • ljud: namn på ett anpassat meddelandeljuds fil som finns i appen. Dessa måste vara kortare än 30 sekunder.
  • thread-id: använd den här nyckeln för att gruppera aviseringar.
  • Kategori: detta definierar kategorin för meddelandet, som används för att visa anpassade åtgärder i meddelandet. Du kommer att utforska detta inom kort.
  • innehåll-tillgängligt: genom att ställa in den här tangenten till 1 blir push-meddelandet tyst. Du lär dig mer om detta i avsnittet tysta Push-meddelanden nedan.
  • mutable-content: genom att ställa in denna nyckel till 1 kan din app ändra meddelandet innan den visas.
  • target-content-id: detta är identifieraren för fönstret som förs framåt.

utanför dessa kan du lägga till så mycket anpassad data som du vill, så länge nyttolasten inte överstiger 4 096 byte.

När du har haft tillräckligt kul att prova dessa alternativ och skicka push-meddelanden till din simulator, gå vidare till nästa avsnitt!

hantering av Push-meddelanden

i det här avsnittet lär du dig hur du utför åtgärder när appen tar emot aviseringar och när användarna trycker på dem.

förstå vad som händer när du får ett Push-meddelande

När din app får ett push-meddelande anropar iOS en metod i UIApplicationDelegate.

Du måste hantera ett meddelande på olika sätt beroende på vilket tillstånd din app är i när meddelandet tas emot:

  • om din app inte kördes och användaren startar den genom att trycka på push-meddelandet skickar iOS meddelandet till din app i launchOptions av application(_:didFinishLaunchingWithOptions:).
  • Om din app kördes antingen i förgrunden eller i bakgrunden meddelar systemet din app genom att ringa application(_:didReceiveRemoteNotification:fetchCompletionHandler:). När användaren öppnar appen genom att trycka på push-meddelandet kan iOS ringa den här metoden igen, så att du kan uppdatera användargränssnittet och visa relevant information.

i det första fallet skapar WenderCast nyhetsartikeln och öppnas direkt till fliken Nyheter. I AppDelegate.swift, Lägg till följande kod i slutet av application(_:didFinishLaunchingWithOptions:), strax före returdeklarationen:

// 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}

detta är vad du gör:

  1. kontrollera om värdet för UIApplication.LaunchOptionsKey.remoteNotification finns i launchOptions. Om det gör det, lanserades din app från ett meddelande. Detta kommer att innehålla push notification nyttolast du skickade.
  2. eftersomaps dictionary finns, Skapa enNewsItem med den.
  3. ändra den valda fliken på flikkontrollen till avsnittet Nyheter.

för att testa detta måste du redigera schemat för WenderCast. Bygg först och kör för att installera den senaste koden på simulatorn. Klicka sedan på WenderCast-schemat och välj Redigera schema…:

redigera schemat

Välj Kör från sidofältet och välj sedan på fliken Info vänta på att körbar ska startas:

Välj vänta på att körbar ska startas

det här alternativet gör att felsökaren väntar på att appen ska startas för första gången efter installationen för att fäst på den.

Bygg och kör. När det är klart att installera, skicka ut fler nyheter med xcrun simctl som tidigare. Tryck på meddelandet och appen öppnas för nyheter:

App öppnas på fliken Nyheter

för att hantera situationen där din app körs när ett push-meddelande tas emot, Lägg till följande till AppDelegate:

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

detta försöker extrahera aps från den medföljande userInfoobjekt och, om det lyckas, skapar ett nytt NewsItem från det.

eftersom iOS kallar den här metoden när appen körs måste du ändra schemat tillbaka till att starta appen automatiskt för att testa den. I Schemaredigeraren, under starta, Välj automatiskt.

Bygg och kör. Håll appen igång i förgrunden och på fliken Nyheter. Skicka en annan nyhet push anmälan och titta på som det visas i flödet:

andra push anmälan visas i fliken Nyheter

det är det! Din app kan nu magiskt få nyheter när det händer. :]

Obs: Push-meddelanden garanteras inte att komma fram. Det här är OK för WenderCast, för att ha hela listan med nyheter är inte så viktigt för den här appen. I allmänhet bör du dock inte använda push-meddelanden som det enda sättet att leverera innehåll. Istället bör push-meddelanden signalera att det finns nytt innehåll tillgängligt och låta appen ladda ner innehållet från källan (till exempel från ett REST API).

arbeta med åtgärds meddelanden

åtgärds meddelanden kan du lägga till egna knappar till anmälan själv. Du kanske har märkt detta på e-postmeddelanden eller Tweets som låter dig ”svara” eller ”favorit” på plats.

din app kan definiera handlingsbara aviseringar när du registrerar dig för aviseringar med hjälp av kategorier. Varje kategori av anmälan kan ha några förinställda anpassade åtgärder.

När du har registrerat dig kan din server ställa in kategorin för ett push-meddelande. Motsvarande åtgärder kommer att vara tillgängliga för användaren när den tas emot.

För WenderCast definierar du en nyhetskategori med en anpassad åtgärd som heter View. Denna åtgärd gör det möjligt för användare att se nyhetsartikeln i appen om de väljer att göra det.

iregisterForPushNotifications(), sätt in följande strax under vakten och ovanför samtalet till getNotificationSettings():

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

gå igenom detta steg för steg:

  1. skapa en ny meddelandeåtgärd, med titelvyn på knappen, som öppnar appen i förgrunden när den utlöses. Åtgärden har en distinkt identifierare, som iOS använder för att skilja mellan andra åtgärder på samma anmälan.
  2. definiera nyhetskategorin, som innehåller visningsåtgärden. Detta har också en distinkt identifierare som din nyttolast måste innehålla för att ange att push-meddelandet tillhör denna kategori.
  3. registrera den nya handlingsbara anmälan genom att ringa setNotificationCategories.

Bygg och kör appen för att registrera de nya aviseringsinställningarna.

bakgrund appen och skicka sedan följande nyttolast viaxcrun simctl verktyg:

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

När meddelandet visas, dra ner det för att avslöja Visningsåtgärden:

Push-meddelande med visningsåtgärden avslöjad

trevligt! Knacka View kommer att starta WenderCast, men det gör inte något spännande ännu. För att få det att visa nyhetsartikeln måste du göra lite mer händelsehantering i delegaten.

hantering av Anmälningsåtgärder

När en anmälningsåtgärd utlöses informerar UNUserNotificationCenter sin delegat. Tillbaka i AppDelegate.swift, Lägg till följande klasstillägg längst ner i filen:

// 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() }}

detta är återuppringningen du får när appen öppnas på grund av en anpassad åtgärd. Det kan se ut som om det händer mycket, men det finns inte mycket nytt här:

  1. hämta userInfo dictionary.
  2. skapa enNewsItem frånaps ordbok och navigera till fliken Nyheter.
  3. kontrollera actionIdentifier. Om det är” Visa ” – åtgärden och länken är en giltig URL, visar den länken i ett SFSafariViewController.
  4. Ring färdigställningshanteraren som systemet skickar till dig.

det finns en sista bit: du måste ställa in delegaten på UNUserNotificationCenter. Lägg till den här raden till toppen av application(_:didFinishLaunchingWithOptions:):

UNUserNotificationCenter.current().delegate = self

Bygg och kör. Stäng appen igen och skicka sedan ett nytt nyhetsmeddelande med följande nyttolast:

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

dra ner meddelandet och tryck på Visa åtgärden, och du ser WenderCast presentera en Safari View controller direkt efter det att den har lanserats:

meddelande länk URL öppnas i en Safari view

Grattis, du har implementerat en åtgärdbar anmälan! Skicka några fler och försök öppna meddelandet på olika sätt för att se hur det beter sig.

skicka till en riktig enhet

Om du inte vill skicka push-meddelanden till en riktig enhet eller om du inte behöver tysta push-meddelanden ännu kan du hoppa över det här avsnittet och gå till vart du ska gå härifrån?

men om du vill få en känsla för hur du skickar push-meddelanden till en riktig enhet och försöker tyst tryck, måste du göra några ytterligare inställningar. Ladda ner PushNotifications-verktyget. Du använder den här verktygsappen för att skicka meddelanden till en riktig enhet. För att installera det, Följ instruktionerna under hur du installerar. Var särskilt uppmärksam på hur du öppnar appen eftersom du måste ändra vissa inställningar för att köra det här verktyget.gå över till Apple Developer Member Center och logga in.

skicka push-meddelanden kräver en autentiseringsnyckel. I medlemscentret väljer du certifikat, identifierare & profiler och hittar sedan nycklar i den vänstra rutan. Till höger om tangenternas titel är en + – knapp. Klicka på den för att skapa en ny nyckel.

ge nyckeln ett namn, till exempel Push Notification Key. Under nyckeltjänster väljer du Apple Push Notifications service (APN).

exempel push notification key

klicka på Fortsätt och registrera sedan på nästa skärm för att skapa din nya nyckel. Tryck På Ladda Ner. Den nedladdade filen kommer att ha ett namn som AuthKey_4SVKWF966R.p8. Håll koll på den här filen — du behöver den för att skicka dina meddelanden! 4svkwf966r-delen av filnamnet är nyckel-ID. Du behöver också detta.

den sista biten som du behöver är ditt lag-ID. Navigera till sidan Medlemsdetaljer i medlemscentret för att hitta den.

Du gjorde det! Med din nya nyckel är du nu redo att skicka ditt första push-meddelande! Du behöver bara en sak till.

Kör appen på din riktiga enhet och kopiera enhetstoken från felsökningskonsolen och ha den klar.

Starta PushNotifications och slutför följande steg:

  1. under autentisering väljer du Token.
  2. Klicka på knappen Välj P8 och välj.P8-fil från föregående avsnitt.
  3. ange ditt nyckel-ID och Team-ID i relevanta fält.
  4. under kroppen anger du appens Bundle ID och din enhetstoken.
  5. ändra begäran så här:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

klicka på Skicka-knappen i PushNotifications.

Push notifications tester

Du bör få din push notification:

din första Push Notification

felsökning vanliga problem

Här är ett par problem som du kan stöta på:

  • vissa meddelanden anländer, men inte alla: om du inte har problem med att skickar många push-meddelanden samtidigt men du får bara ett fåtal, frukta inte! Det är genom design. APN upprätthåller en QoS (servicekvalitet) kö för varje enhet. Storleken på den här kön är 1, Så om du skickar flera meddelanden åsidosätts den sista meddelandet.
  • problem med att ansluta till Push Notification Service: en möjlighet kan vara att det finns en brandvägg som blockerar portarna som används av APN. Se till att du avblockerar dessa portar.

använda tysta Push-meddelanden

tysta push-meddelanden kan väcka din app tyst för att utföra vissa uppgifter i bakgrunden. WenderCast kan använda den här funktionen för att tyst uppdatera podcastlistan.

med en korrekt serverkomponent kan detta vara mycket effektivt. Din app behöver inte ständigt söka efter data. Du kan skicka ett tyst push-meddelande när nya data är tillgängliga.

För att komma igång, välj WenderCast-målet igen. Klicka nu på fliken signering & funktioner och Lägg till bakgrundslägena. Kontrollera sedan alternativet fjärrmeddelanden:

kontrollera alternativet fjärrmeddelanden för bakgrundslägen rätt

Nu kommer din app att vakna i bakgrunden när den tar emot en av dessa push-meddelanden.

i AppDelegate.snabb, hitta application(_:didReceiveRemoteNotification:fetchCompletionHandler:). Ersätt anropet till NewsItem.makeNewsItem() med följande:

// 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)}

gå över koden:

  1. du kontrollerar om content-available är inställt på 1. I så fall är detta en tyst anmälan.
  2. du uppdaterar podcastlistan, som är ett asynkront nätverkssamtal.
  3. när uppdateringen är klar, ring kompletteringshanteraren för att låta systemet veta om appen laddade några nya data.
  4. Om det inte är en tyst anmälan är det en nyhet, så gör en nyhet.

var noga med att ringa färdigställningshanteraren med det ärliga resultatet. Systemet mäter batteriförbrukningen och tiden som din app använder i bakgrunden och kan strypa din app om det behövs.

det är allt som finns till det. För att testa det, Bygg och kör, förgrunda appen och tryck på följande nyttolast via PushNotifications-verktyget:

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

om allt går bra ska ingenting hända, såvida inte en ny podcast just lagts till i fjärrdatabasen. För att bekräfta att koden sprang som förväntat, ange en brytpunkt i application(_:didReceiveRemoteNotification:fetchCompletionHandler:) och gå igenom den efter att meddelandet skickats.

vart ska man gå härifrån?

Grattis! Du har slutfört denna handledning och gjort WenderCast till en fullt utrustad app med push-meddelanden!

Du kan ladda ner det färdiga projektet med knappen Hämta Material längst upp eller längst ner i denna handledning.

Vill du dyka djupare in i allt du kan göra med push-meddelanden, som att bygga anpassade UI och skicka kritiska varningar? Vår Push Notifications by Tutorials bok kommer att lära dig de avancerade funktionerna i push notifications.

en annan resurs är Push Notifications Tutorial för iOS: rich Push Notifications tutorial.

även om push-meddelanden är en viktig del av moderna appar är det också mycket vanligt att användare avvisar behörigheter till din app om du överdriver meddelandena. Men med tankeväckande design kan push-meddelanden hålla dina användare tillbaka till din app om och om igen!

Söt katt meddelande bell

denna katt fick ett pushmeddelande om att hans middag var klar!

Jag hoppas att du har haft denna push-meddelanden handledning. Om du har några frågor kan du gärna lämna dem i diskussionsforumet nedan.

raywenderlich.com veckovis

den raywenderlich.com nyhetsbrev är det enklaste sättet att hålla dig uppdaterad om allt du behöver veta som mobilutvecklare.

få en veckovis sammanfattning av våra handledning och kurser, och få en gratis fördjupad e-postkurs som en bonus!

Medelbetyg

4.9/5

Lägg till ett betyg för detta innehåll

logga in för att lägga till ett betyg

17 betyg

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *