- Konfigurer din app til at modtage push-meddelelser.
- vis dem til dine brugere eller udfør andre opgaver.
Kom godt i gang
Hvad er push notifikationer? Det er meddelelser, der sendes til din app via Apple Push Notification service (APN ‘ er), selvom din app ikke kører, eller telefonen sover. Hvad kan du bruge push notifikationer til?
- Vis en kort SMS, kaldet en advarsel, der gør opmærksom på noget nyt i din app.
- Afspil en meddelelse lyd.
- Indstil et badgenummer på appens ikon for at lade brugeren vide, at der er nye elementer.
- Giv handlinger, som brugeren kan tage uden at åbne appen.
- Vis et medie vedhæftet fil.
- vær tavs, så appen kan udføre en opgave i baggrunden.
- gruppe meddelelser i tråde.
- Rediger eller fjern leverede meddelelser.
- Kør kode for at ændre din meddelelse, før den vises.
- Vis en brugerdefineret, interaktiv brugergrænseflade til din anmeldelse.
- og måske mere.
denne vejledning dækker mange af disse anvendelser for at hjælpe dig med at komme i gang med at oprette push-meddelelser i dine apps. For at fuldføre denne tutorial skal du bruge følgende:
- kode 11.4 eller nyere. Tidligere versioner understøtter ikke push notifikationer ved hjælp af simulatoren.
- et Apple Developer Program-medlemskab for at kunne kompilere appen med Push Notifications-retten.
for at sende og modtage push-meddelelser skal du udføre tre hovedopgaver:
- Konfigurer din app og Registrer den med APN ‘ erne.
- Send en push-meddelelse fra en server til bestemte enheder via APN ‘ er. Du vil simulere det med kode.
- brug tilbagekald i appen til at modtage og håndtere push-meddelelser.
afsendelse af push-meddelelser er et ansvar for din apps serverkomponent. Mange apps bruger tredjeparter til at sende push-meddelelser. Andre bruger brugerdefinerede løsninger eller populære biblioteker (såsom Houston). Du rører kun ved at sende push-beskeder i denne tutorial, så sørg for at tjekke, hvor du skal hen herfra? sektion for at bygge videre på din viden om push notifikationer.for at komme i gang skal du hente starterprojektet ved hjælp af knappen Hent materialer øverst eller nederst i denne tutorial. Vi er alles go-to kilde til raywenderlich.com podcasts og nyheder.
i startmappen skal du åbne Vendercast.- Ja. Vælg Vendercast i projektnavigatoren, og vælg derefter Vendercast-målet. I fanen Generelt & kapaciteter skal du vælge dit udviklingsteam. Byg og kør i en simulator.
raywenderlich.com podcasts og lader brugerne spille dem. Men det lader ikke brugerne vide, hvornår en ny podcast er tilgængelig, og fanen Nyheder er tom! Du løser snart disse problemer med kraften i push-meddelelser.
afsendelse og modtagelse af Push-meddelelser
konfiguration af appen
sikkerhed er meget vigtigt for push-meddelelser. Du ønsker ikke, at andre skal sende push-meddelelser til dine brugere via din app. Du skal udføre flere opgaver for at konfigurere din app til sikkert at modtage push-meddelelser.
aktivering af Push Notification Service
først skal du ændre bundle identifier. I Projektnavigator skal du markere målstregen for Projektnavigator og derefter vælge målstregen for Projektnavigator. Vælg Generelt, og skift derefter Bundle Identifier til noget unikt, så Apples push notification server kan dirigere skubber til denne app.
Dernæst skal du oprette et App-ID på din udviklerkonto og aktivere push-meddelelsesretten. Klik på fanen signering & funktioner, og klik derefter på knappen + kapacitet. Skriv “push” i filterfeltet, og tryk på Enter.
Når du har tilføjet push notifikationer ret, skal dit projekt se sådan ud:
bag kulisserne opretter dette App-ID ‘ et og tilføjer derefter push-meddelelser ret til det. Du kan logge ind på Apple Developer Center for at bekræfte dette:
det er alt hvad du behøver for at konfigurere for nu. Du er klar til at begynde at forbedre appen.
beder om tilladelse til Brugerunderretninger
der er to trin, du tager for at registrere dig for push-meddelelser. Først skal du få brugerens tilladelse til at vise underretninger. Derefter kan du registrere enheden for at modtage fjernunderretninger (push). Hvis alt går godt, vil systemet derefter give dig et enhedstoken, som du kan tænke på som en “adresse” til denne enhed.
du registrerer dig for push-meddelelser umiddelbart efter, at appen lanceres. Bed først om brugertilladelser.
Åbn AppDelegate.hurtig og tilføj følgende til toppen af filen:
import UserNotifications
tilføj derefter følgende metode til slutningen afAppDelegate
:
func registerForPushNotifications() { //1 UNUserNotificationCenter.current() //2 .requestAuthorization(options: ) { granted, _ in //3 print("Permission granted: \(granted)") }}
hvad denne kode gør:
UNUserNotificationCenter
håndterer alle notifikationsrelaterede aktiviteter i appen, herunder push-meddelelser.- du påberåber
requestAuthorization(options:completionHandler:)
til (du gættede det) anmode om tilladelse til at vise underretninger. Den beståedeoptions
angiv de typer meddelelser, du vil have din app til at bruge — her anmoder du om alarm, lyd og badge. - færdiggørelseshandleren modtager en Bool, der angiver, om autorisationen var vellykket. I dette tilfælde skal du blot udskrive resultatet.
requestAuthorization(options:completionHandler:)
kan omfatte enhver kombination af UNAuthorizationOptions
:
- .badge: Vis et nummer på hjørnet af appens ikon.
- .lyd: Afspil en lyd.
- .alert: Vis en tekstmeddelelse.
- .carPlay: Vis meddelelser i CarPlay.
- .foreløbig: Send meddelelser, der ikke afbryder. Brugeren får ikke en anmodning om tilladelse, hvis du kun bruger denne indstilling, men dine meddelelser vises kun lydløst i meddelelsescentret.
- .providesAppNotificationSettings: Angiv, at appen har sin egen brugergrænseflade til meddelelsesindstillinger.
- .criticalAlert: Ignorer mute-kontakten og Forstyr ikke. Du har brug for en særlig ret fra Apple til at bruge denne mulighed, fordi den kun er beregnet til meget specielle brugssager.
tilføj følgende nær slutningen af application(_:didFinishLaunchingWithOptions:)
, lige før return
:
registerForPushNotifications()
opkaldregisterForPushNotifications()
her sikrer, at appen vil forsøge at registrere sig for push-meddelelser, når som helst den lanceres.
Byg og kør. Når Appen starter, skal du modtage en prompt, der beder om tilladelse til at sende dig underretninger.
tryk på Tillad, og poof! Appen kan nu vise underretninger. Fedt! Men hvad nu hvis brugeren afviser tilladelserne? Tilføj denne metode inde AppDelegate
:
func getNotificationSettings() { UNUserNotificationCenter.current().getNotificationSettings { settings in print("Notification settings: \(settings)") }}
først angav du de ønskede indstillinger. Denne metode returnerer de indstillinger, brugeren har givet. For nu udskriver du dem, men du cirkler snart tilbage her for at gøre mere med dette.
iregisterForPushNotifications()
skal du erstatte opkaldet tilrequestAuthorization(options:completionHandler:)
med følgende:
UNUserNotificationCenter.current() .requestAuthorization( options: ) { granted, _ in print("Permission granted: \(granted)") guard granted else { return } self?.getNotificationSettings() }
du har tilføjet et opkald tilgetNotificationSettings()
i færdiggørelseshandleren. Dette er vigtigt, fordi brugeren til enhver tid kan gå ind i appen Indstillinger og ændre deres underretningstilladelser. guard
undgår at foretage dette opkald i tilfælde, hvor tilladelse ikke blev givet.
registrering med APN ‘ er
nu hvor du har tilladelser, registrerer du dig for fjernunderretninger!
i getNotificationSettings()
, tilføj følgende under print
inde i lukningen:
guard settings.authorizationStatus == .authorized else { return }DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications()}
Her bekræfter du authorizationStatus
er .authorized
: brugeren har givet underretningstilladelser. I så fald kalder du UIApplication.shared.registerForRemoteNotifications()
for at starte registrering med Apple Push Notification service. Du skal ringe til dette på hovedtråden, ellers modtager du en runtime-advarsel.
tilføj følgende til slutningen afAppDelegate
:
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 metode kaldes af iOS, når et opkald tilregisterForRemoteNotifications()
lykkes. Koden kan se kryptisk ud, men den tager simpelthen en modtaget deviceToken
og konverterer den til en streng. Enhedstokenet er frugten af denne proces. Det er leveret af APN ‘ er og entydigt identificerer denne app på denne særlige enhed.
Når du sender en push-meddelelse, bruger serveren tokens som “adresser” til at levere til de korrekte enheder. I din app vil du nu sende dette token til din server for at gemme og bruge senere til at sende underretninger.
Tilføj nu følgende:
func application( _ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { print("Failed to register: \(error)")}
denne metode kaldes af iOS, hvis registerForRemoteNotifications()
fejler. Du udskriver bare fejlen for nu.
det er det! Byg og løb. Fordi du er på en simulator, vil du se enFailed to register
fejl. Du kan ignorere det for nu. Senere, når du kører på en rigtig enhed, skal du modtage et token i konsoludgangen. Her er et eksempel:
afsendelse af en simuleret Push-meddelelse
brug en teksteditor til at oprette en fil, der kaldes først.apn, som du videregiver til Simctl-hjælpeprogrammet. Indsæt følgende JSON-tekst, og gem filen.
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
strukturen af denne JSON vil blive forklaret i næste afsnit. Tålmodighed, græshoppe.
Byg og kør appen igen på simulatoren, og baggrund derefter appen eller Lås enheden. Appen er endnu ikke i stand til at behandle push-meddelelser, mens den er i forgrunden.
for at bruge simctl skal du kende enhedsidentifikatoren for den simulator, du kører appen i. Hvis der kun er en enhed, der kører i simulatoren, kan du bruge booted i stedet for en identifikator. Vælg derefter fanen simulatorer øverst og vælg den simulator, du bruger fra listen til venstre. Brug musen til at kopiere identifikatoren. Du skal muligvis udvide dialogboksen for at se den fuldt ud.
Åbn Terminalappen og skift til den mappe, hvor du gemte først.apn. Indtast derefter følgende kommando ved hjælp af enten opstartet eller enhedsidentifikatoren i stedet for device_identifier: xcrun simctl push device_identifier bundle_identifier first.apn
. Udskift device_identifier
med den enhedsidentifikator, du kopierede fra koden, og erstatbundle_identifier
med appens bundle identifier — den, du brugte, da du først opsatte projektet. Her er et eksempel:
Kør kommandoen, og du vil se push-meddelelsen vises på simulatoren!
tryk på meddelelsen for at starte appen.
er det ikke sejt? :]
ser du på en grundlæggende Push-meddelelse
før du går videre til håndtering af push-meddelelser, skal du kigge på kroppen af den meddelelse, du har sendt:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
nyttelasten er en JSON-ordbog, der indeholder mindst et element, aps, som også er en ordbog. I dette eksempelaps
indeholder felternealert
sound
oglink_url
. Når enheden modtager denne push-meddelelse, viser den en alarmvisning med teksten “nyheder!”og spiller standard lydeffekt.
link_url
er faktisk et brugerdefineret felt. Du kan tilføje brugerdefinerede felter til nyttelasten som denne, og de vil blive leveret til din ansøgning. Fordi du ikke håndterer det inde i appen endnu, gør dette nøgle / værdipar i øjeblikket intet.
link_url
skal være på et peer-niveau til aps
ordbogspost snarere end inde i det. Det fungerer stadig, hvis du placerer det inde, men vi foreslår altid at overholde Apples dokumentation og vil rette dette i vores næste opdatering til denne tutorial.Der er otte indbyggede nøgler, du kan tilføje til aps
ordbog (se den officielle Nyttelastnøglereference for mere information):
- alert: Dette kan være en streng, som i det foregående eksempel, eller en ordbog. Som en ordbog kan den lokalisere teksten eller ændre andre aspekter af underretningen.
- badge: dette er et tal, der vises i hjørnet af appikonet. Du kan fjerne badget ved at indstille dette til 0.
- lyd: navnet på en brugerdefineret meddelelse lyd fil placeret i app. Disse skal være kortere end 30 sekunder.
- thread-id: Brug denne tast til at gruppere meddelelser.
- Kategori: dette definerer kategorien for underretningen, som bruges til at vise brugerdefinerede handlinger på underretningen. Du vil udforske dette om kort tid.
- indhold-tilgængeligt: ved at indstille denne tast til
1
bliver push-meddelelsen tavs. Du lærer om dette i afsnittet Silent Push Notifications nedenfor. - mutable-content: ved at indstille denne tast til
1
, kan din app ændre meddelelsen, før den vises. - target-content-id: dette er identifikatoren for det fremlagte vindue.
uden for disse kan du tilføje så mange brugerdefinerede data, som du vil, så længe nyttelasten ikke overstiger 4.096 bytes.
Når du har haft det sjovt at prøve disse muligheder og sende push-meddelelser til din simulator, skal du gå videre til næste afsnit!
håndtering af Push-meddelelser
i dette afsnit lærer du, hvordan du udfører handlinger, når din app modtager meddelelser, og når brugerne trykker på dem.
forstå, hvad der sker, når du modtager en Push-meddelelse
når din app modtager en push-meddelelse, kalder iOS en metode iUIApplicationDelegate
.
Du skal håndtere en meddelelse forskelligt afhængigt af hvilken tilstand din app er i, når meddelelsen modtages:
- hvis din app ikke kørte, og brugeren starter den ved at trykke på push-meddelelsen, sender iOS meddelelsen til din app i
launchOptions
afapplication(_:didFinishLaunchingWithOptions:)
. - hvis din app kørte enten i forgrunden eller i baggrunden, meddeler systemet din app ved at kalde
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Når brugeren åbner appen ved at trykke på push-meddelelsen, kalder iOS muligvis denne metode igen, så du kan opdatere brugergrænsefladen og vise relevante oplysninger.
i det første tilfælde opretter Vendercast nyhedselementet og åbner direkte til fanen Nyheder. I AppDelegate.Hurtig, tilføj følgende kode til slutningen af application(_:didFinishLaunchingWithOptions:)
, lige før returopgørelsen:
Dette er hvad du laver:
- Kontroller, om værdien for
UIApplication.LaunchOptionsKey.remoteNotification
findes ilaunchOptions
. Hvis det gør det, blev din app lanceret fra en anmeldelse. Dette vil indeholde den push notification nyttelast, du sendte. - siden
aps
ordbog eksisterer, opret enNewsItem
med det. - skift den valgte fane i fanecontrolleren til nyhedsafsnittet.
for at teste dette skal du redigere skemaet for Vendercast. Først skal du bygge og køre for at installere den nyeste kode på simulatoren. Klik derefter på skemaet og vælg Rediger Skema…:
vælg Kør fra sidebjælken, og vælg derefter i fanen Info vent på, at den eksekverbare skal lanceres:
denne mulighed får debuggeren til at vente på, at appen lanceres for første gang efter installation at vedhæfte det.
Byg og kør. Når det er færdigt at installere, skal du sende flere nyheder ved hjælp af xcrun simctl
som før. Tryk på meddelelsen, og appen åbnes for nyheder:
for at håndtere den situation, hvor din app kører, når en push-meddelelse modtages, skal du tilføje følgende til 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 forsøger at udtrække aps fra den medfølgende userInfo
objekt og, hvis det lykkes, opretter en ny NewsItem
fra det.
da iOS kalder denne metode, når appen kører, skal du ændre ordningen tilbage til at starte appen automatisk for at teste den. Vælg automatisk i Skemaeditoren under start.
Byg og kør. Hold appen kørende i forgrunden og på fanen Nyheder. Send en anden nyhed push notification og se som det vises i feedet:
det er det! Din app kan nu magisk modtage nyheder, når det sker. :]
arbejde med handlingsmæssige meddelelser
handlingsmæssige meddelelser giver dig mulighed for at tilføje brugerdefinerede knapper til selve meddelelsen. Du har måske bemærket dette på e-mail-meddelelser eller kvidre, der lader dig “svar” eller “favorit” på stedet.
din app kan definere handlingsmæssige underretninger, når du tilmelder dig underretninger ved hjælp af kategorier. Hver kategori af meddelelse kan have et par forudindstillede brugerdefinerede handlinger.
Når du er registreret, kan din server indstille kategorien for en push-meddelelse. De tilsvarende handlinger vil være tilgængelige for brugeren, når de modtages.
du definerer en Nyhedskategori med en brugerdefineret handling med navnet Vis. Denne handling giver brugerne mulighed for at se nyhedsartiklen i appen, hvis de vælger det.
iregisterForPushNotifications()
, indsæt følgende lige under vagten og over opkaldet til getNotificationSettings()
:
// 1let viewAction = UNNotificationAction( identifier: Identifiers.viewAction, title: "View", options: )// 2let newsCategory = UNNotificationCategory( identifier: Identifiers.newsCategory, actions: , intentIdentifiers: , options: )// 3UNUserNotificationCenter.current().setNotificationCategories()
går igennem dette, trin for trin:
- Opret en ny underretningshandling med titelvisningen på knappen, der åbner appen i forgrunden, når den udløses. Handlingen har en tydelig identifikator, som iOS bruger til at skelne mellem andre handlinger på den samme anmeldelse.
- Definer kategorien nyheder, som vil indeholde visningshandlingen. Dette har også en særskilt identifikator, som din nyttelast skal indeholde for at angive, at push-meddelelsen tilhører denne kategori.
- Registrer den nye handlingsmæssige meddelelse ved at kalde
setNotificationCategories
.
Byg og kør appen for at registrere de nye meddelelsesindstillinger.
baggrund appen og send derefter følgende nyttelast viaxcrun simctl
utility:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
Når meddelelsen vises, skal du trække den ned for at afsløre Visningshandlingen:
dejligt! Tapping visning vil starte Vendercast, men det gør ikke noget spændende endnu. For at få det til at vise nyheden, skal du gøre noget mere hændelseshåndtering i delegaten.
håndtering af Meddelelseshandlinger
når en meddelelseshandling udløses, UNUserNotificationCenter
informerer sin delegeret. Tilbage i AppDelegate.til bunden af 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 den tilbagekald, du får, når appen åbnes på grund af en brugerdefineret handling. Det kan se ud som om der sker meget, men der er ikke meget nyt her:
- få
userInfo
ordbog. - Opret en
NewsItem
fraaps
ordbog og naviger til fanen Nyheder. - kontroller
actionIdentifier
. Hvis det er handlingen” Vis”, og linket er en gyldig URL, viser det linket i etSFSafariViewController
. - ring til den færdiggørelseshåndterer, som systemet videregiver til dig.
Der er en sidste bit: du skal indstille delegeret påUNUserNotificationCenter
. Tilføj denne linje til toppen af application(_:didFinishLaunchingWithOptions:)
:
UNUserNotificationCenter.current().delegate = self
Byg og kør. Luk appen igen, og send derefter en ny nyhedsmeddelelse med følgende nyttelast:
{ "aps": { "alert": "New Posts!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
træk underretningen ned, og tryk på visningshandlingen, og du vil se Vendercast præsentere en Safari-visningskontroller lige efter lanceringen:
Tillykke, du har implementeret en handling, der kan handles meddelelse! Send et par mere, og prøv at åbne underretningen på forskellige måder for at se, hvordan den opfører sig.
afsendelse til en rigtig enhed
Hvis du ikke vil sende push-meddelelser til en rigtig enhed, eller du ikke har brug for lydløse push-meddelelser endnu, kan du springe dette afsnit over og gå til hvor skal du hen herfra?
men hvis du ønsker at få en fornemmelse for, hvordan du sender push-meddelelser til en rigtig enhed og prøver silent push, skal du foretage en ekstra opsætning. Hent værktøjet PushNotifications. Du bruger denne hjælpeprogram til at sende meddelelser til en rigtig enhed. For at installere det skal du følge instruktionerne under Sådan installeres. Vær særlig opmærksom på, hvordan du åbner appen, fordi du bliver nødt til at ændre nogle indstillinger for at køre dette værktøj.
gå over til Apple Developer Member Center og log ind.
afsendelse af push-meddelelser kræver en godkendelsesnøgle. I medlemscentret skal du vælge certifikater, identifikatorer & profiler, og find derefter nøgler i venstre rude. Til højre for tasterne titel er en + knap. Klik på den for at oprette en ny nøgle.
Giv nøglen et navn, f.eks. Vælg Apple Push Notifications service (APN ‘ er) under Key Services.
Klik på Fortsæt og registrer derefter på det næste skærmbillede for at oprette din nye nøgle. Tryk På Hent. Den hentede fil vil have et navn noget som Authkey_4svkf966r. p8. Hold styr på denne fil-du skal bruge den til at sende dine meddelelser! 4svkf966r-delen af filnavnet er nøgle-ID ‘ et. Du får også brug for dette.
det sidste stykke, du har brug for, er dit Team-ID. Naviger til siden med medlemsoplysninger i medlemscentret for at finde den.
du gjorde det! Med din nye nøgle er du nu klar til at sende din første push-meddelelse! Du har brug for en ting mere.
Kør appen på din rigtige enhed, og kopier enhedstokenet fra debugger-konsollen og få den klar.
start PushNotifications, og udfør følgende trin:
- vælg Token under godkendelse.
- Klik på knappen Vælg P8 og vælg .P8-fil fra det foregående afsnit.
- Indtast dit nøgle-ID og Team-ID i de relevante felter.
- under kroppen skal du indtaste din apps Bundle-ID og din enhedstoken.
- Skift anmodningsorganet for at se sådan ud:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
Klik på Send-knappen i PushNotifications.
Du skal modtage din push notifikation:
fejlfinding almindelige problemer
Her er et par problemer, du kan støde på:
- nogle meddelelser ankommer, men ikke alle: hvis du sender mange push notifikationer samtidigt, men du modtager kun et par, Frygt ikke! Det er af design. APN ‘ er opretholder en kø for kvalitet af Service (kvalitet af Service) for hver enhed. Størrelsen på denne kø er 1, så hvis du sender flere underretninger, tilsidesættes den sidste underretning.
- Problem med at oprette forbindelse til Push Notification Service: en mulighed kan være, at der er en brandvæg, der blokerer de porte, der bruges af APN ‘ er. Sørg for at fjerne blokeringen af disse porte.
brug af lydløse Push-meddelelser
lydløse push-meddelelser kan vække din app lydløst for at udføre nogle opgaver i baggrunden. Denne funktion kan bruges til at opdatere podcastlisten stille.
med en ordentlig serverkomponent kan dette være meget effektivt. Din app behøver ikke konstant at stemme for data. Du kan sende den en lydløs push-meddelelse, når nye data er tilgængelige.
for at komme i gang skal du vælge målet for Vendercast igen. Klik nu på signering & Capabilities fanen og tilføje baggrunden tilstande kapacitet. Kontroller derefter indstillingen Fjernunderretninger:
nu vågner din app op i baggrunden, når den modtager en af disse push-meddelelser.
i AppDelegate.Hurtig, find application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Udskift opkaldet 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år over koden:
- du kontrollerer, om
content-available
er indstillet til 1. I så fald er dette en tavs anmeldelse. - du opdaterer podcastlisten, som er et asynkront netværksopkald.
- når opdateringen er færdig, skal du ringe til færdiggørelseshandleren for at fortælle systemet, om appen har indlæst nye data.
- hvis det ikke er en tavs meddelelse, så er det en nyhed, så lav en nyhed.
sørg for at ringe til færdiggørelseshandleren med det ærlige resultat. Systemet måler batteriforbruget og den tid, som din app bruger i baggrunden, og kan kvæle din app, hvis det er nødvendigt.
det er alt, hvad der er til det. For at teste det, Bygge og køre, forgrunden app og skubbe følgende nyttelast via PushNotifications nytte:
{ "aps": { "content-available": 1 }}
Hvis alt går godt, skal der ikke ske noget, medmindre en ny podcast lige blev tilføjet til fjerndatabasen. For at bekræfte, at koden kørte som forventet, skal du indstille et breakpoint i application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
og gå igennem den, efter at meddelelsen er sendt.
hvor skal man hen herfra?
Tillykke! Du har gennemført denne tutorial og gjort Vendercast en fuldt udstyret app med push notifikationer!
Du kan hente det afsluttede projekt ved hjælp af knappen Hent materialer øverst eller nederst i denne tutorial.
vil du dykke dybere ned i alt, hvad du kan gøre med push-meddelelser, såsom at opbygge brugerdefinerede UI ‘ er og sende kritiske alarmer? Vores Push notifikationer af Tutorials bog vil lære dig de avancerede funktioner i push notifikationer.
en anden ressource er Push notifikationer Tutorial til iOS: Rich Push notifikationer tutorial.
selvom push-meddelelser er en vigtig del af moderne apps, er det også meget almindeligt, at brugerne afviser tilladelser til din app, hvis du overdriver meddelelserne. Men med tankevækkende design kan push-meddelelser holde dine brugere tilbage til din app igen og igen!
denne kat modtog en push-meddelelse om, at hans middag var klar!
Jeg håber du har nydt denne push notifikationer tutorial. Hvis du har spørgsmål, er du velkommen til at forlade dem i diskussionsforumet nedenfor.
raywenderlich.com ugentlig
den raywenderlich.com nyhedsbrev er den nemmeste måde at holde dig opdateret om alt hvad du behøver at vide som mobiludvikler.
få en ugentlig fordøjelse af vores tutorials og kurser, og modtag et gratis dybtgående e-mail-kursus som en bonus!
gennemsnitlig bedømmelse
4.9/5
Tilføj en bedømmelse for dette indhold
Log ind for at tilføje en bedømmelse