Push Notifications Tutorial: Komme i Gang

Update Merk: Chuck Krutsinger oppdatert denne opplæringen For Xcode 11 Og Swift 5. Jack wu skrev den opprinnelige opplæringen, Og Keegan Rush skrev en tidligere oppdatering.iOS-utviklere elsker å forestille seg at folk bruker sin fantastiske app hele tiden. Men selvfølgelig må brukerne noen ganger lukke appen og utføre andre aktiviteter. Klesvask bretter seg ikke selv, vet du! Heldigvis lar push-varsler utviklere nå brukere og utføre små oppgaver-selv når brukerne ikke aktivt bruker en app! I denne opplæringen lærer du hvordan du:

  • Konfigurer appen din til å motta push-varsler.
  • Vise dem til brukerne eller utføre andre oppgaver.

Komme I Gang

hva er push-varsler? De er meldinger som sendes til appen din via Apple Push Notification service (Apner), selv om appen din ikke kjører eller telefonen sover. Hva kan du bruke push notifications til?

  • Vise en kort tekstmelding, kalt et varsel, som trekker oppmerksomhet til noe nytt i appen.
  • Spill av en varslingslyd.
  • Angi et merkenummer på appens ikon for å la brukeren vite at det er nye elementer.
  • Gi handlinger brukeren kan ta uten å åpne appen.
  • Vis et medievedlegg.
  • Vær stille, slik at appen kan utføre en oppgave i bakgrunnen.
  • Gruppemeldinger i tråder.
  • Rediger eller fjern leverte varsler.
  • Kjør kode for å endre varselet før du viser det.
  • Vise en tilpasset, interaktiv UI for varsling.
  • og sannsynligvis mer.

denne veiledningen dekker mange av disse bruksområdene for å hjelpe deg med å komme i gang med å lage push-varslinger i appene dine. For å fullføre denne opplæringen trenger Du følgende:

  • Xcode 11.4 eller nyere. Tidligere versjoner av Xcode støtter ikke push-varslinger ved hjelp av simulatoren.
  • et Medlemskap I Apple Developer Program for å kunne kompilere appen med Push Notifications-rettigheten.
Merk: Senere i opplæringen lærer du hvordan du sender push-varsler til en ekte enhet ved Å Sende til En Ekte Enhet.

for å sende og motta push-varslinger må du utføre tre hovedoppgaver:

  1. Konfigurer appen din og registrer Den med Apnene.
  2. Send en push-melding fra en server til bestemte enheter via Apner. Du vil simulere Det Med Xcode.
  3. Bruk tilbakeringinger i appen for å motta og håndtere push-varslinger.

Sending av push-varsler er et ansvar for appens serverkomponent. Mange apper bruker tredjeparter til å sende push-varslinger. Andre bruker tilpassede løsninger eller populære biblioteker (For Eksempel Houston). Du vil bare røre ved å sende push-meldinger i denne opplæringen,så sørg For å sjekke Ut Hvor Du Skal Gå Herfra? seksjon for å bygge på din kunnskap om push-varslinger.

for å komme i gang, last Ned WenderCast starter-prosjektet ved Hjelp Av Last Ned Materialer-knappen øverst eller nederst i denne opplæringen. WenderCast er alles go-to kilde for raywenderlich.com podcaster og breaking news.

Åpne WenderCast i startmappen.xcodeproj. Velg WenderCast I prosjektnavigatoren, og velg Deretter WenderCast-målet. I Kategorien Generelt& Evner velger du utviklingsteamet ditt. Bygg og kjør i en simulator.

Bygg og kjør startprosjektet

WenderCast viser en liste over raywenderlich.com podcaster og lar brukerne spille dem. Men det lar ikke brukerne vite når en ny podcast er tilgjengelig, Og Nyhetsfanen er tom! Du vil snart løse disse problemene med kraften i push-varslinger.

Sende og Motta Push-Varslinger

Konfigurere Appen

Sikkerhet er svært viktig for push-varslinger. Du vil ikke at andre skal sende push-varslinger til brukerne dine via appen din. Du må utføre flere oppgaver for å konfigurere appen din til å motta push-varslinger på en sikker måte.

Aktivering Av Push-Varslingstjenesten

først må du endre bundle-identifikatoren. Merk WenderCast i prosjektnavigatoren I Xcode, og velg Deretter WenderCast-målet. Velg Generelt, og endre Bundle Identifier til noe unikt, Slik At Apples push notification server kan lede pushes til denne appen.

Endre bundle identifier

Deretter må du opprette En App-ID i utviklerkontoen din og aktivere push-varslingsretten. Xcode har en enkel måte å gjøre dette på: Med WenderCast-målet fortsatt valgt, klikker Du På Signering& Evner-fanen og klikker deretter På + Evne-knappen. Skriv «push» i filterfeltet og trykk Enter.

Legg til push notifications-funksjonen

etter at du har lagt til push notifications-rettigheten, bør prosjektet se slik ut:

Prosjekt med rett til push-varslinger

Merk: hvis det oppstår problemer, kan Du gå Til Apple Developer Center. Du må kanskje godta en ny utviklerlisens, Som Apple elsker å oppdatere, og prøv igjen.

Bak kulissene oppretter Dette App-ID-EN og legger deretter til push-varslingsretten til Den. Du kan logge Inn På Apple Developer Center for å bekrefte dette:

App ID-konfigurasjon som viser push-varslingsrettigheter

Det er alt du trenger å konfigurere for nå. Du er klar til å begynne å forbedre appen.

Be Om Brukervarsler Tillatelse

det er to trinn du tar for å registrere deg for push-varsler. Først må du få brukerens tillatelse til å vise varsler. Deretter kan du registrere enheten for å motta eksterne (push) varsler. Hvis alt går bra, vil systemet da gi deg et enhetstoken, som du kan tenke på som en «adresse» til denne enheten.

I WenderCast registrerer du deg for push-varsler umiddelbart etter at appen starter. Be om brukertillatelser først.

Åpne AppDelegate.swift og legge til følgende øverst i filen:

import UserNotifications

legg deretter til følgende metode til slutten av AppDelegate:

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

hva denne koden gjør:

  1. UNUserNotificationCenter håndterer alle varslingsrelaterte aktiviteter i appen, inkludert push-varslinger.
  2. du påberoper requestAuthorization(options:completionHandler:) til (du gjettet det) be om autorisasjon til å vise varsler. Den passerteoptions angi hvilke typer varsler du vil at appen skal bruke – her ber du om varsel, lyd og merke.
  3. fullføringsbehandleren mottar En Bool som angir om autorisasjonen var vellykket. I dette tilfellet skriver du bare ut resultatet.
Merk: alternativene du sender tilrequestAuthorization(options:completionHandler:) kan inkludere en hvilken som helst kombinasjon av UNAuthorizationOptions:

  • .badge: Vis et nummer på hjørnet av appens ikon.
  • .lyd: Spill en lyd.
  • .varsel: Vis en tekstvarsling.
  • .carPlay: Vis varsler I CarPlay.
  • .foreløpig: Post ikke-avbryte varslinger. Brukeren får ikke en forespørsel om tillatelse hvis du bare bruker dette alternativet, men varslene dine vises bare stille i Varslingssenteret.
  • .providesAppNotificationSettings: Angi at appen har sitt eget BRUKERGRENSESNITT for varslingsinnstillinger.
  • .criticalAlert: Ignorer dempebryteren og Ikke Forstyrr. Du trenger en spesiell rettighet Fra Apple for å bruke dette alternativet, fordi det bare er ment for svært spesielle brukssaker.

Legg til følgende nær slutten avapplication(_:didFinishLaunchingWithOptions:), like før return:

registerForPushNotifications()

RingerregisterForPushNotifications() her sikrer at appen vil forsøke å registrere seg for push-varsler når den lanseres.

Bygg og kjør. Når appen starter, bør du motta en melding som ber om tillatelse til å sende deg varsler.

Be Om Varsler

Trykk På Tillat, og poof! Appen kan nå vise varsler. Flott! Men hva om brukeren avslår tillatelsene? Legg til denne metoden inne AppDelegate:

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

først angav du innstillingene du vil ha. Denne metoden returnerer innstillingene brukeren har gitt. For nå skriver du ut dem, men du vil sirkle tilbake hit snart for å gjøre mer med dette.

iregisterForPushNotifications(), erstatt anropet tilrequestAuthorization(options:completionHandler:) med følgende:

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

du har lagt til et anrop tilgetNotificationSettings() i fullføringsbehandleren. Dette er viktig fordi brukeren når som helst kan gå inn I Innstillinger-appen og endre varslingstillatelsene sine. guard unngår å ringe i tilfeller der tillatelse ikke ble gitt.

Registrering Med APNs

Nå som du har tillatelser, registrerer du deg for eksterne varsler!

i getNotificationSettings() legger du til følgende under inne i lukkingen:

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

her bekrefter du authorizationStatus er .authorized: brukeren har gitt varslingstillatelser. I så fall ringer du UIApplication.shared.registerForRemoteNotifications() for å starte registreringen med Apple Push Notification service. Du må ringe dette på hovedtråden, eller du vil motta en runtime advarsel.

Legg til følgende til slutten 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)")}

denne metoden kalles av iOS når et kall tilregisterForRemoteNotifications() lykkes. Koden kan se kryptisk ut, men det tar bare en mottatt deviceToken og konverterer den til en streng. Enhetstoken er frukten av denne prosessen. Den leveres Av Apner og identifiserer denne appen unikt på denne enheten.

når du sender et push-varsel, bruker serveren tokens som «adresser» for å levere til de riktige enhetene. I appen din vil du nå sende dette token til serveren din for å lagre og bruke senere for å sende varsler.

legg nå til følgende:

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

denne metoden kalles av iOS hvis registerForRemoteNotifications() mislykkes. Du skriver bare ut feilen for nå.

Det er det! Bygg og løp. Fordi du er på en simulator, vil du se enFailed to register feil. Du kan ignorere det for nå. Senere, når du kjører på en ekte enhet, bør du motta et token i konsollutgangen. Her er et eksempel:

Eksempel på et enhetstoken

Merk: det er flere grunner til at registreringen kan mislykkes. Oftest er Det fordi App-ID-EN ikke var riktig konfigurert. Feilmeldingen gir generelt et godt hint for hva som er galt.

Sende Et Simulert Push-Varsel

Bruk et tekstredigeringsprogram til å opprette en fil som heter first.apn, som du vil passere Til Xcodes simctl-verktøy. Lim INN FØLGENDE json-tekst og lagre filen.

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

strukturen til DENNE JSON vil bli forklart i neste avsnitt. Tålmodighet, gresshopper.

Bygg og kjør appen igjen på simulatoren, og bakgrunn appen eller lås enheten. Appen er ennå ikke i stand til å behandle push-varsler mens du er i forgrunnen.

for å bruke simctl må du kjenne enhetsidentifikatoren for simulatoren som du kjører appen i. Hvis det bare er en enhet som kjører i simulatoren, kan du bruke oppstart i stedet for en identifikator. For å få identifikatoren, i Xcode, velg Windows ▸ – Enheter og Simulatorer, velg Deretter Simulatorer-fanen øverst og velg simulatoren du bruker fra listen til venstre. Bruk musen til å kopiere identifikatoren. Du må kanskje utvide dialogboksen for å se den fullt ut.

Finne enhetsidentifikatoren I Xcode

Åpne Terminal-appen og bytt til katalogen der du lagret først.apn. Skriv deretter inn følgende kommando ved hjelp av enten oppstart eller enhetsidentifikatoren Fra Xcode i stedet for device_identifier: xcrun simctl push device_identifier bundle_identifier first.apn. Erstatt device_identifier med enhetsidentifikatoren du kopierte Fra Xcode, og erstatt bundle_identifier med appens bundle identifier-den du brukte da du først satte opp prosjektet. Her er et eksempel:

Bruk xcrun simctl til å sende et push-varsel fra terminalen

Kjør kommandoen, og du vil se push-varslingen vises på simulatoren!

Push varsling vises på simulator

Trykk på varselet for å starte programmet.

app lansert fra push varsling

Er Ikke det kult? :]

ser På En Grunnleggende Push-Varsling

før du går videre til håndtering av push-varslinger, ta en titt på kroppen av meldingen du har sendt:

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

nyttelasten er EN json-ordbok som inneholder minst ett element, aps, som også er en ordbok. I dette eksemplet inneholderaps feltenealertsound oglink_url. Når enheten mottar denne push varsling, viser det et varsel visning med teksten » Breaking News!»og spiller standard lydeffekt.

link_url er faktisk et tilpasset felt. Du kan legge til egendefinerte felt i nyttelasten som dette, og de vil bli levert til søknaden din. Fordi du ikke håndterer det inne i appen ennå, gjør dette nøkkel / verdi-paret ingenting.

Korreksjon: En gløgg leser påpekte At apples dokumentasjon sier at tilpasset innhold som link_url bør være på peer nivå til aps ordbok oppføring i stedet for innsiden av det. Det fungerer fortsatt hvis du plasserer den inne, men vi foreslår alltid å følge apples dokumentasjon og vil rette opp dette i vår neste oppdatering til denne opplæringen.

det er åtte innebygde taster du kan legge til iaps ordbok (se den offisielle Nyttelastnøkkelreferansen for mer informasjon):

  • alert: Dette kan være en streng, som i forrige eksempel, eller en ordbok. Som en ordbok kan den lokalisere teksten eller endre andre aspekter av varselet.
  • badge: Dette er et tall som vises i hjørnet av appikonet. Du kan fjerne merket ved å sette dette til 0.
  • lyd: Navn på en tilpasset varslingslydfil som ligger i appen. Disse må være kortere enn 30 sekunder.
  • tråd-id: bruk denne tasten til å gruppere varsler.
  • kategori: dette definerer kategorien for varselet, som brukes til å vise egendefinerte handlinger på varselet. Du vil utforske dette snart.
  • innhold-tilgjengelig: ved å sette denne nøkkelen til 1 blir push-varslingen stille. Du lærer om dette i Delen Stille Pushvarsler nedenfor.
  • mutable-innhold: ved å sette denne nøkkelen til 1, kan appen endre varselet før den vises.
  • target-content-id: dette er identifikatoren for vinduet som er fremført.

Utenfor disse kan du legge til så mye tilpassede data som du vil, så lenge nyttelasten ikke overstiger 4 096 byte.

når du har hatt nok moro å prøve ut disse alternativene og sende push-varslinger til simulator, gå videre til neste avsnitt!

Håndtering Av Push-Varsler

i denne delen lærer du hvordan du utfører handlinger når appen mottar varsler og når brukere trykker på dem.

Forstå Hva Som Skjer Når du Mottar Et Push-Varsel

når appen mottar et push-varsel, kaller iOS en metode i UIApplicationDelegate.

du må håndtere et varsel forskjellig avhengig av hvilken tilstand appen din er i når varselet mottas:

  • hvis appen din ikke kjørte og brukeren starter den ved å trykke på push-varslingen, sender iOS varselet til appen din ilaunchOptions av application(_:didFinishLaunchingWithOptions:).
  • hvis appen din kjørte enten i forgrunnen eller bakgrunnen, varsler systemet appen din ved å ringe application(_:didReceiveRemoteNotification:fetchCompletionHandler:). Når brukeren åpner appen ved å trykke på push-varslingen, kan iOS kalle denne metoden igjen, slik at du kan oppdatere BRUKERGRENSESNITTET og vise relevant informasjon.

I det første tilfellet Vil WenderCast opprette nyhetsartikkelen og åpne Direkte Til Nyheter-fanen. I AppDelegate.swift, legg til følgende kode på slutten av application(_:didFinishLaunchingWithOptions:), like før returmeldingen:

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

Dette er hva du gjør:

  1. Kontroller om verdien for UIApplication.LaunchOptionsKey.remoteNotification finnes i launchOptions. Hvis det gjør det, ble appen din lansert fra et varsel. Dette vil inneholde push notification nyttelast du sendte.
  2. Sidenaps ordbok eksisterer, opprett en NewsItem med den.
  3. Endre den valgte fanen i fanekontrolleren til Nyhetsseksjonen.

for å teste dette må Du redigere Ordningen Med WenderCast. Først må du bygge og kjøre for å installere den nyeste koden på simulatoren. Klikk Deretter WenderCast-skjemaet og velg Rediger Skjema…:

Rediger Skjemaet

Velg Kjør fra sidepanelet, og velg Deretter I Info-fanen Vent på at kjørbar fil skal startes:

velg vent på at kjørbar fil skal startes

dette alternativet gjør at feilsøkeren venter på at appen skal lanseres for første gang etter at du har installert for å legge ved til det.

Bygg og kjør. Når det er ferdig å installere, send ut flere breaking news ved hjelp av xcrun simctl som før. Trykk på varselet, og appen åpnes for nyheter:

App åpnet til kategorien nyheter

for å håndtere situasjonen der appen din kjører når et push-varsel mottas, legg til følgende i AppDelegate:

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

dette prøver å trekke ut ap-ene fra den medfølgende

userInfoobjekt og, hvis vellykket, oppretter en nyNewsItemfra den.Siden iOS kaller denne metoden når appen kjører, må du endre ordningen tilbake til å starte appen automatisk for å teste den. Velg Automatisk Under Start I Skjemaredigering.

Bygg og kjør. Hold appen i gang i Forgrunnen og På Nyheter-fanen. Send en annen nyhet push varsling og se på som det vises i feeden:

Andre push varsling vist i kategorien nyheter

Det er det! Din app nå kan magisk motta siste nytt når det skjer. :]

Merk: Push-varslinger er ikke garantert å ankomme. Dette ER OK for WenderCast, fordi å ha hele listen over nyheter er ikke så viktig for dette programmet. Generelt bør du imidlertid ikke bruke push-varsler som den eneste måten å levere innhold på. I stedet bør push-varslinger signalisere at det er nytt innhold tilgjengelig og la appen laste ned innholdet fra kilden (for EKSEMPEL FRA EN REST API).

Arbeide med Handlingsvarsler

Handlingsvarsler lar deg legge til egendefinerte knapper i selve varselet. Du har kanskje lagt merke til dette på e-postvarsler eller Tweets som lar deg «svare » eller» favoritt » på stedet.

appen din kan definere handlingsvarslinger når du registrerer deg for varsler ved hjelp av kategorier. Hver kategori av varsling kan ha noen forhåndsinnstilte egendefinerte handlinger.

når du er registrert, kan serveren din angi kategorien for et push-varsel. Tilsvarende handlinger vil være tilgjengelige for brukeren når de mottas.

For WenderCast definerer Du En Nyhetskategori med en egendefinert handling med Navnet View. Denne handlingen vil tillate brukere å se nyhetsartikkelen i appen hvis de velger å.

IregisterForPushNotifications(), sett inn følgende rett under vakt og over kallet tilgetNotificationSettings():

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

Gå gjennom dette, trinn for trinn:

  1. Opprett en ny varslingshandling, med tittelvisningen på knappen, som åpner appen i forgrunnen når den utløses. Handlingen har en distinkt identifikator, som iOS bruker til å skille mellom andre handlinger på samme varsel.
  2. Definer nyhetskategorien, som vil inneholde visningsaksjonen. Dette har også en distinkt identifikator som nyttelasten din må inneholde for å angi at push-varslingen tilhører denne kategorien.
  3. Registrer det nye handlingsvarselet ved å ringe setNotificationCategories.

Bygg og kjør appen for å registrere de nye varslingsinnstillingene.

Bakgrunn app og deretter sende følgende nyttelast viaxcrun simctl utility:

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

når meldingen vises, trekke ned På Den for å avsløre Visningen handling:

Push varsling med visningen handling avslørt

hyggelig! Tapping View vil lansere WenderCast, men det gjør ikke noe spennende ennå. For å få det til å vise nyhetselementet, må du gjøre litt mer hendelseshåndtering i representanten.

Håndtering Av Varslingshandlinger

når en varslingshandling utløses, informerer UNUserNotificationCenter representanten. Tilbake I AppDelegate.swift, legg til følgende klasseutvidelse til bunnen av 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() }}

Dette er tilbakeringingen du får når appen åpnes på grunn av en tilpasset handling. Det kan se ut som om det skjer mye, men det er ikke mye nytt her:

  1. userInfo ordbok.
  2. Opprett en NewsItem fraaps ordbok og naviger til Fanen Nyheter.
  3. Kontroller actionIdentifier. Hvis det er» Vis » – handlingen og lenken er en gyldig URL, viser den lenken i en SFSafariViewController.
  4. Ring fullføringsbehandleren systemet sender til deg.

Det er en siste bit: du må sette representanten på UNUserNotificationCenter. Legg denne linjen til toppen avapplication(_:didFinishLaunchingWithOptions:):

UNUserNotificationCenter.current().delegate = self

Bygg Og kjør. Lukk appen igjen, og send deretter et nytt nyhetsvarsel med følgende nyttelast:

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

Trekk ned varselet og trykk På Vis handling, og Du vil se WenderCast presentere En Safari View controller rett etter at den starter:

Notification link URL åpnet i En Safari view

Gratulerer, du har implementert en handlingsbar melding! Send noen flere og prøv å åpne varselet på forskjellige måter for å se hvordan det oppfører seg.

Sende Til En Ekte Enhet

Hvis du ikke vil sende push-varsler til en ekte enhet, eller du ikke trenger stille push-varsler ennå, kan du hoppe over denne delen og gå Til Hvor Skal Du Gå Herfra?Men Hvis Du vil få en følelse av hvordan du sender push-varsler til en ekte enhet og prøver silent push, må du gjøre noe ekstra oppsett. Last Ned Verktøyet PushNotifications. Du bruker denne verktøyappen til å sende varsler til en ekte enhet. For å installere det, følg instruksjonene Under slik installerer du. Vær spesielt oppmerksom på hvordan du åpner appen fordi du må endre noen innstillinger for å kjøre dette verktøyet.

Gå til Apple Developer Member Center og logg inn.

Sending av push-varslinger krever En Autentiseringsnøkkel. I medlemssenteret velger Du Sertifikater, Identifikatorer & Profiler, og deretter finner Du Nøkler i venstre rute. Til høyre for Tastene tittelen er en + knapp. Klikk på den for å opprette en ny nøkkel.

Gi nøkkelen et navn, for Eksempel Push Notification-Tasten. Velg Apple Push Notifications service (Apner) under Viktige Tjenester.

eksempel push notification key

Klikk Fortsett og Registrer Deg på neste skjermbilde for å opprette den nye nøkkelen. Trykk På Last Ned. Den nedlastede filen vil ha et navn som AuthKey_4SVKWF966R. p8. Hold styr på denne filen-du trenger den for å sende varslene dine! Den 4svkwf966r del av filnavnet Er Nøkkelen ID. Du trenger også dette.

det siste stykket du trenger er Lagets ID. Naviger til Medlemsdetaljsiden i medlemssenteret for å finne Den.

Du gjorde det! Med den nye nøkkelen, er du nå klar til å sende din første push varsling! Du trenger bare en ting til.

Kjør appen på din virkelige enhet og kopier enhetens token fra debugger-konsollen og ha den klar.

Start PushNotifications og fullfør følgende trinn:

  1. velg Token Under Godkjenning.
  2. Klikk På Velg P8-knappen og velg .p8-fil fra forrige seksjon.
  3. Skriv Inn Nøkkel-ID og Team-ID i de relevante feltene.
  4. skriv Inn Appens Bundle-ID Og enhetstoken under Body.
  5. Endre forespørselens kropp for å se slik ut:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}

Klikk På Send-knappen I PushNotifications.

Push notifications tester

Du bør motta push notification:

Ditt Første Push Notification

Feilsøking Av Vanlige Problemer

Her er et par problemer du kan støte på:

  • noen varsler kommer, Men ikke alle: Hvis Du sender mange push-varslinger samtidig, men du får bare noen få, frykt ikke! Det er av design. Apner opprettholder En QoS (Quality Of Service) ko for hver enhet. Størrelsen på denne køen er 1, så hvis du sender flere varsler, overstyres det siste varselet.
  • Problem å koble Til Push Notification Service: En mulighet kan være at det er en brannmur som blokkerer portene som Brukes av Apner. Pass på at du fjerner blokkeringen av disse portene.

Bruke Stille Push-Varslinger

Silent push-varslinger kan vekke app opp stille til å utføre noen oppgaver i bakgrunnen. WenderCast kan bruke denne funksjonen til å stille oppdatere podcast-listen.

med en riktig serverkomponent kan dette være svært effektivt. Appen din trenger ikke å spørre etter data hele tiden. Du kan sende den en stille push varsling når nye data er tilgjengelig.

velg WenderCast-målet på nytt for å komme i gang. Klikk Nå På Signering & Evner-fanen og legg Til Bakgrunnsmodusene. Sjekk Deretter Alternativet Fjernvarslinger:

Sjekk alternativet fjernvarslinger for bakgrunnsmodi rettighet

nå vil appen din våkne opp i bakgrunnen når den mottar en av disse push-varslene.

I AppDelegate.rask, finn application(_:didReceiveRemoteNotification:fetchCompletionHandler:). Erstatt kallet til NewsItem.makeNewsItem() med følgende:

// 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å over koden:

  1. du sjekker om content-available er satt til 1. I så fall er dette et stille varsel.
  2. du oppdaterer podcastlisten, som er et asynkront nettverksanrop.
  3. når oppdateringen er fullført, ring fullføringsbehandleren for å la systemet vite om appen lastet inn nye data.
  4. hvis det ikke er en stille melding, så er det en nyhet, så gjør en nyhet.

pass på å ringe fullføringsbehandleren med det ærlige resultatet. Systemet måler batteriforbruket og tiden som appen din bruker i bakgrunnen, og kan strupe appen din om nødvendig.

Det er alt som skal til. For å teste det, bygge og kjøre, forgrunn app og skyv følgende nyttelast via PushNotifications verktøyet:

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

hvis alt går bra, skal ingenting skje, med mindre en ny podcast bare ble lagt til den eksterne databasen. For å bekrefte at koden kjørte som forventet, sett et stoppunkt i application(_:didReceiveRemoteNotification:fetchCompletionHandler:) og gå gjennom det etter at varselet er sendt.

Hvor Skal Du Gå Herfra?

Gratulerer! Du har fullført denne opplæringen og gjort WenderCast en fullverdig app med push notifications!

du kan laste ned det ferdige prosjektet ved Hjelp Av Last Ned Materialer-knappen øverst eller nederst i denne opplæringen.

Vil du dykke dypere inn i alt du kan gjøre med push-varslinger, for eksempel å bygge tilpassede UIs og sende kritiske varsler? Våre Push-Varslinger Av Tutorials boken vil lære deg de avanserte funksjonene i push-varslinger.

En annen ressurs Er Push Notifications Tutorial for iOS: Rich Push Notifications tutorial.

selv om push-varsler er en viktig del av moderne apper, er det også svært vanlig at brukere avviser tillatelser til appen din hvis du overdriver varslene. Men med gjennomtenkt design kan push-varslinger holde brukerne tilbake til appen din igjen og igjen!

søt katt varsling bell

denne katten fikk en push melding om at hans middag var klar!

jeg håper du har hatt glede av denne push notifications opplæringen. Hvis du har noen spørsmål, gjerne la dem i diskusjonsforumet nedenfor.

raywenderlich.com Ukentlig

Den raywenderlich.com nyhetsbrev er den enkleste måten å holde deg oppdatert på alt du trenger å vite som mobilutvikler.

Få en ukentlig oversikt over våre opplæringsprogrammer og kurs, og motta et gratis, grundig e-postkurs som en bonus!

Gjennomsnittlig Rangering

4.9/5

Legg til en vurdering for dette innholdet

Logg Inn For å legge til en vurdering

17 vurderinger

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *