- 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.
for å sende og motta push-varslinger må du utføre tre hovedoppgaver:
- Konfigurer appen din og registrer Den med Apnene.
- Send en push-melding fra en server til bestemte enheter via Apner. Du vil simulere Det Med Xcode.
- 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.
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.
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.
etter at du har lagt til push notifications-rettigheten, bør prosjektet se slik ut:
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:
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:
-
UNUserNotificationCenter
håndterer alle varslingsrelaterte aktiviteter i appen, inkludert push-varslinger. - 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. - fullføringsbehandleren mottar En Bool som angir om autorisasjonen var vellykket. I dette tilfellet skriver du bare ut resultatet.
requestAuthorization(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.
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:
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.
Å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:
Kjør kommandoen, og du vil se push-varslingen vises på simulatoren!
Trykk på varselet for å starte programmet.
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
feltenealert
sound
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.
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 i
launchOptions
avapplication(_: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:
- Kontroller om verdien for
UIApplication.LaunchOptionsKey.remoteNotification
finnes ilaunchOptions
. Hvis det gjør det, ble appen din lansert fra et varsel. Dette vil inneholde push notification nyttelast du sendte. - Siden
aps
ordbok eksisterer, opprett enNewsItem
med den. - 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…:
Velg Kjør fra sidepanelet, og velg Deretter I Info-fanen 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:
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
userInfo
objekt og, hvis vellykket, oppretter en nyNewsItem
fra 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:
Det er det! Din app nå kan magisk motta siste nytt når det skjer. :]
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:
- 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.
- 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.
- 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:
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:
- Få
userInfo
ordbok. - Opprett en
NewsItem
fraaps
ordbok og naviger til Fanen Nyheter. - Kontroller
actionIdentifier
. Hvis det er» Vis » – handlingen og lenken er en gyldig URL, viser den lenken i enSFSafariViewController
. - 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:
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.
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:
- velg Token Under Godkjenning.
- Klikk På Velg P8-knappen og velg .p8-fil fra forrige seksjon.
- Skriv Inn Nøkkel-ID og Team-ID i de relevante feltene.
- skriv Inn Appens Bundle-ID Og enhetstoken under Body.
- 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.
Du bør motta 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:
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:
- du sjekker om
content-available
er satt til 1. I så fall er dette et stille varsel. - du oppdaterer podcastlisten, som er et asynkront nettverksanrop.
- når oppdateringen er fullført, ring fullføringsbehandleren for å la systemet vite om appen lastet inn nye data.
- 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!
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