iOS-Kehittäjät rakastavat kuvitella ihmisten käyttävän mahtavaa sovellustaan jatkuvasti. Mutta, tietenkin, käyttäjät joutuvat joskus sulkemaan sovelluksen ja suorittaa muita toimintoja. Pyykki ei taitu itsestään. Onneksi push-ilmoitusten avulla kehittäjät voivat tavoittaa käyttäjät ja suorittaa pieniä tehtäviä — silloinkin, kun käyttäjät eivät aktiivisesti käytä sovellusta! Tässä opetusohjelmassa opit:
- Määritä sovelluksesi vastaanottamaan push-ilmoitukset.
- näytä ne käyttäjillesi tai suorita muita tehtäviä.
aloitus
Mitä ovat push-ilmoitukset? Ne ovat Apple Push-ilmoituspalvelun (APNs) kautta sovellukseesi lähetettyjä viestejä, vaikka sovellus ei olisi käynnissä tai puhelin nukkuisi. Mihin voit käyttää push-ilmoituksia?
- Näytä lyhyt tekstiviesti eli hälytys, joka kiinnittää huomion johonkin uuteen sovelluksessasi.
- Soita ilmoitusääni.
- Aseta lätkän numero sovelluksen kuvakkeeseen, jotta käyttäjä tietää uusista kohteista.
- tarjoa toimintoja, joihin käyttäjä voi ryhtyä avaamatta sovellusta.
- Näytä medialiite.
- Ole hiljaa, jolloin sovellus voi suorittaa tehtävän taustalla.
- Ryhmittele ilmoitukset kierteiksi.
- Muokkaa tai poista toimitettuja ilmoituksia.
- Suorita koodi muuttaaksesi ilmoitustasi ennen sen näyttämistä.
- Näytä oma, interaktiivinen käyttöliittymä ilmoitukseesi.
- ja todennäköisesti enemmänkin.
Tämä opetusohjelma kattaa monia näistä käyttötavoista, joiden avulla voit aloittaa push-ilmoitusten luomisen sovelluksissasi. Tämän opetusohjelman loppuun saattamiseksi tarvitset seuraavat:
- Xcode 11.4 tai uudempi. Aiemmat Xcode-versiot eivät tue push-ilmoituksia simulaattorin avulla.
- Apple Developer Program-jäsenyys, jotta sovelluksen voi kääntää Push-ilmoituksilla.
push-ilmoitusten lähettämiseksi ja vastaanottamiseksi sinun on suoritettava kolme päätehtävää:
- Määritä sovelluksesi ja rekisteröi se APNs: ään.
- Lähetä push-ilmoitus palvelimelta tietyille laitteille APNs: n kautta. Simuloit sen Xcodella.
- käytä sovelluksessa soittopyyntöjä push-ilmoitusten vastaanottamiseen ja käsittelyyn.
push-ilmoitusten lähettäminen on sovelluksesi palvelinosan vastuulla. Monet sovellukset käyttävät kolmansia osapuolia push-ilmoitusten lähettämiseen. Toiset käyttävät mukautettuja ratkaisuja tai suosittuja kirjastoja (kuten Houston). Voit vain koskettaa push-viestien lähettämistä tässä opetusohjelmassa, joten muista tarkistaa, mihin mennä täältä? osio, joka perustuu push-ilmoitusten tuntemukseesi.
Aloita lataamalla WenderCast-aloitusprojekti käyttämällä tämän opetusohjelman ylä-tai alalaidassa olevaa Download Materials-painiketta. WenderCast on kaikkien lähde raywenderlich.com podcasteja ja ajankohtaisia uutisia.
aloituskansiossa avaa WenderCast.xcodeproj. Valitse Wendercast Project Navigatorissa ja valitse sitten wendercast kohde. Valitse Kehitystiimisi yleisestä & valmiudet-välilehdestä. Rakenna ja aja simulaattorissa.
wendercast näyttää listan raywenderlich.com podcasteja ja antaa käyttäjien toistaa niitä. Mutta se ei anna käyttäjien tietää, kun uusi podcast on saatavilla ja uutiset välilehti on tyhjä! Korjaat nämä ongelmat pian push-ilmoitusten voimalla.
Push-ilmoitusten lähettäminen ja vastaanottaminen
sovelluksen määrittäminen
tietoturva on erittäin tärkeää push-ilmoituksissa. Et halua kenenkään muun lähettävän push-ilmoituksia käyttäjillesi sovelluksen kautta. Sinun täytyy suorittaa useita tehtäviä, jotta voit määrittää sovelluksesi vastaanottamaan push-ilmoitukset turvallisesti.
kun Push-ilmoituspalvelu
otetaan käyttöön, täytyy ensin vaihtaa Bundlen tunniste. Korosta Xcode-kohdassa Wendercast Project Navigatorissa ja valitse sitten wendercast-kohde. Valitse Yleiset ja vaihda sitten Bundle-tunniste johonkin ainutlaatuiseen, jotta Applen push-ilmoituspalvelin voi ohjata työntöjä tähän sovellukseen.
Seuraavaksi sinun täytyy luoda sovellus ID kehittäjätilillesi ja ottaa käyttöön push-ilmoitusoikeus. Xcodella on yksinkertainen tapa tehdä tämä: kun wendercast-kohde on vielä valittuna, napsauta allekirjoitus & valmiudet-välilehteä ja napsauta sitten + valmiudet-painiketta. Kirjoita” push ” suodatinkenttään ja paina Enter.
kun olet lisännyt push-ilmoitusten oikeudet, projektisi tulee näyttää tältä:
kulissien takana tämä luo sovellustunnuksen ja lisää sitten siihen oikeutetut push-ilmoitukset. Voit kirjautua Apple Developer Centeriin varmistaaksesi tämän:
Tämä on kaikki mitä tarvitset määrittääksesi nyt. Olet valmis aloittamaan sovelluksen parantamisen.
Käyttäjäilmoitusten käyttöoikeuksien pyytäminen
push-ilmoitusten rekisteröimiseen on kaksi vaihetta. Ensin, sinun täytyy saada käyttäjän lupa näyttää ilmoituksia. Sitten, voit rekisteröidä laitteen vastaanottaa kauko (push) ilmoitukset. Jos kaikki menee hyvin, järjestelmä antaa sinulle laitteen token, jonka voit ajatella ”osoite” tälle laitteelle.
Wendercastissa rekisteröidyt push-ilmoituksiin heti sovelluksen käynnistämisen jälkeen. Kysy ensin käyttöoikeuksia.
avaa Appdelegaatti.swift ja lisää seuraavat tiedoston alkuun:
import UserNotifications
sitten lisätään seuraava menetelmä AppDelegate
:
func registerForPushNotifications() { //1 UNUserNotificationCenter.current() //2 .requestAuthorization(options: ) { granted, _ in //3 print("Permission granted: \(granted)") }}
mitä tämä koodi tekee:
-
UNUserNotificationCenter
hoitaa kaikki sovelluksen ilmoituksiin liittyvät toiminnot, mukaan lukien push-ilmoitukset. - vedot
requestAuthorization(options:completionHandler:)
pyytääksesi lupaa ilmoitusten näyttämiseen. Ohitettuoptions
ilmoittaa, minkä tyyppisiä ilmoituksia haluat sovelluksesi käyttävän — tässä pyydät hälytys -, ääni-ja virkamerkkiä. - täydennyskäsittelijä saa boolin, joka kertoo, onnistuiko lupa. Tässä tapauksessa, voit yksinkertaisesti tulostaa tuloksen.
requestAuthorization(options:completionHandler:)
voi sisältää minkä tahansa yhdistelmän UNAuthorizationOptions
:
- .badge: Näytä numero kulmassa sovelluksen kuvaketta.
- .ääni: Soita ääni.
- .hälytys: Näytä teksti-ilmoitus.
- .carPlay: Näytä ilmoitukset Carplayssa.
- .väliaikaiset: keskeytymättömät ilmoitukset. Käyttäjä ei saa lupaa, jos käytät vain tätä vaihtoehtoa, mutta ilmoitukset näkyvät vain hiljaisesti Ilmoituskeskuksessa.
- .providesapp notificationsettings: ilmoita, että sovelluksella on oma käyttöliittymä ilmoitusasetuksia varten.
- .criticalAlert: Ohita mykistyskytkin ja älä häiritse. Tarvitset Applelta erityisoikeuden tämän vaihtoehdon käyttämiseen, koska se on tarkoitettu vain hyvin erityisiin käyttötapauksiin.
Lisää application(_:didFinishLaunchingWithOptions:)
, juuri ennen return
:
registerForPushNotifications()
soittaminen registerForPushNotifications()
täällä varmistetaan, että sovellus yrittää rekisteröityä push-ilmoituksiin milloin tahansa käynnistyessään.
Rakenna ja aja. Kun sovellus käynnistyy, sinun pitäisi saada kehote, joka kysyy lupaa lähettää sinulle ilmoituksia.
napauta Salli, ja poof! Sovellus voi nyt näyttää ilmoitukset. Hienoa! Mutta entä jos käyttäjä kieltäytyy käyttöoikeuksista? Lisää tämä menetelmä sisälle AppDelegate
:
func getNotificationSettings() { UNUserNotificationCenter.current().getNotificationSettings { settings in print("Notification settings: \(settings)") }}
ensin määritit haluamasi asetukset. Tämä menetelmä palauttaa käyttäjän antamat asetukset. Toistaiseksi tulostat niitä, mutta palaat pian tänne tekemään lisää tällä.
In registerForPushNotifications()
, korvaa puhelu requestAuthorization(options:completionHandler:)
seuraavasti:
UNUserNotificationCenter.current() .requestAuthorization( options: ) { granted, _ in print("Permission granted: \(granted)") guard granted else { return } self?.getNotificationSettings() }
olet lisännyt puhelun getNotificationSettings()
täydennyskäsittelijässä. Tämä on tärkeää, koska käyttäjä voi milloin tahansa mennä Asetukset-sovellukseen ja muuttaa ilmoitusoikeuksiaan. guard
välttää tämän puhelun soittamisen tapauksissa, joihin lupaa ei ole myönnetty.
Rekisteröityminen APNs: ään
nyt kun sinulla on käyttöoikeudet, rekisteröidyt etäilmoituksiin!
In getNotificationSettings()
, lisää print
sulkimen sisällä:
guard settings.authorizationStatus == .authorized else { return }DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications()}
täällä varmistat authorizationStatus
is .authorized
: käyttäjä on myöntänyt ilmoitusoikeudet. Jos näin on, voit soittaa UIApplication.shared.registerForRemoteNotifications()
aloittaaksesi rekisteröitymisen Apple Push-ilmoituspalvelussa. Sinun täytyy soittaa tähän pääkierteeseen, tai saat ajonaikaisen varoituksen.
lisätään 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)")}
tätä menetelmää kutsutaan iOS: n toimesta aina, kun registerForRemoteNotifications()
onnistuu. Koodi voi näyttää kryptiseltä, mutta se yksinkertaisesti ottaa vastaan vastaanotetun deviceToken
ja muuntaa sen merkkijonoksi. Laite token on tämän prosessin hedelmä. Se tarjoaa APNs ja yksilöi tämän sovelluksen tässä laitteessa.
push-ilmoituksen lähettämisessä palvelin käyttää tokeneita ”osoitteina”, jotka toimitetaan oikeille laitteille. Sovelluksessasi lähetät nyt tämän tunnuksen palvelimellesi tallentaaksesi ja käyttääksesi sitä myöhemmin ilmoitusten lähettämiseen.
nyt lisätään seuraava:
func application( _ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { print("Failed to register: \(error)")}
tätä menetelmää kutsutaan iOS: n mukaan, jos registerForRemoteNotifications()
epäonnistuu. Tulostat virheen toistaiseksi.
That ’ s it! Rakenna ja juokse. Koska olet simulaattorissa, näet Failed to register
virhe. Voit olla välittämättä siitä. Myöhemmin, kun suoritat oikealla laitteella, sinun pitäisi saada token konsolin ulostulossa. Tässä esimerkki:
lähettämällä simuloidun Push-ilmoituksen
käytä tekstieditoria luodaksesi tiedoston nimeltä first.apn, jonka siirrät Xcoden simctl-apuohjelmaan. Liitä seuraava JSON teksti ja tallenna tiedosto.
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
tämän JSON rakenne selviää seuraavassa jaksossa. Kärsivällisyyttä, Heinäsirkka.
Rakenna ja suorita sovellus uudelleen simulaattorissa, sitten taustoita sovellus tai Lukitse laite. Sovellus ei vielä pysty käsittelemään push-ilmoituksia etualalla.
käyttääksesi simctl: ää sinun tulee tietää sen simulaattorin laitetunniste, jossa käytät sovellusta. Jos simulaattorissa on vain yksi laite käynnissä, voit käyttää tunnisteen sijasta käynnistettyä laitetta. Saadaksesi tunnisteen, valitse Xcode-kohdassa Windows ▸ Devices and Simulators, valitse sitten Simulaattorit-välilehti yläreunasta ja valitse käyttämäsi simulaattori vasemmalla olevasta luettelosta. Kopioi tunniste hiirellä. Sinun täytyy ehkä laajentaa valintaikkunaa nähdäksesi sen kokonaan.
avaa Päätesovellus ja vaihda hakemistoon, johon tallennit ensin.yhteysosoite. Kirjoita sitten seuraava komento käyttäen joko käynnistettyä tai Xcode-laitteen tunnistetta device_identierin sijasta: xcrun simctl push device_identifier bundle_identifier first.apn
. Korvaa device_identifier
Xcodesta kopioimallasi laitetunnisteella ja bundle_identifier
sovelluksen bundle — tunnisteella-jota käytit projektin perustamisen yhteydessä. Tässä esimerkki:
Suorita komento ja näet push-ilmoituksen ilmestyvän simulaattoriin!
napauta ilmoitusta sovelluksen käynnistämiseksi.
isn ’ t that cool? :]
Katso Perusilmoitusta
ennen kuin siirryt käsittelemään työntöilmoituksia, katso lähettämäsi ilmoituksen runko:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
hyötykuorma on JSON-sanakirja, joka sisältää vähintään yhden kohteen, aps: n, joka on myös sanakirja. Tässä esimerkissä aps
sisältää kentät alert
sound
ja link_url
. Kun laite saa tämän push-ilmoituksen, se näyttää varoitusnäkymän tekstillä ” Breaking News!”ja soittaa tavallista ääniefektiä.
link_url
on oikeastaan oma kenttänsä. Voit lisätä mukautettuja kenttiä hyötykuormaan näin, ja ne toimitetaan sovellukseesi. Koska et käsittele sitä sovelluksen sisällä vielä, tämä avain / arvopari ei tällä hetkellä tee mitään.
link_url
, tulisi olla vertaistasolla aps
sanakirjamerkinnän sijaan sen sisällä. Se toimii edelleen, jos laitat sen sisälle, mutta suosittelemme aina noudattamaan Applen dokumentaatiota ja korjaamme tämän seuraavassa päivityksessämme tähän opetusohjelmaan.on kahdeksan sisäänrakennettua avainta, joita voi lisätä aps
sanakirja (katso lisätietoja virallisesta hyötykuorman Avainviitteestä):
- hälytys: Tämä voi olla merkkijono, kuten edellisessä esimerkissä, tai sanakirja. Sanakirjana Se voi paikallistaa tekstin tai muuttaa ilmoituksen muita puolia.
- badge: tämä on numero, joka näkyy sovelluskuvakkeen nurkassa. Voit poistaa merkin asettamalla tämän arvoon 0.
- sound: sovelluksessa sijaitsevan mukautetun ilmoitusäänitiedoston nimi. Niiden on oltava alle 30 sekuntia.
- thread-id: käytä tätä avainta ryhmäilmoituksiin.
- Luokka: tämä määrittelee ilmoituksen luokan, jota käytetään näyttämään mukautetut toiminnot ilmoituksessa. Tutkitte tätä pian.
- content-available: asettamalla tämän avaimen
1
, push-ilmoitus hiljenee. Saat tietää tästä alla olevasta Hiljaiset Push-ilmoitukset-osiosta. - mutable-content: asettamalla tämän avaimen
1
, sovellus voi muokata ilmoitusta ennen sen näyttämistä. - target-content-id: tämä on aikaistetun ikkunan tunniste.
näiden ulkopuolelle voi lisätä niin paljon mukautettuja tietoja kuin haluaa, kunhan hyötykuorma ei ylitä 4 096 tavua.
kun olet saanut tarpeeksi hauskaa kokeilla näitä vaihtoehtoja ja lähettää push-ilmoituksia simulaattoriisi, siirry seuraavaan osioon!
Push-ilmoitusten käsittely
tässä osiossa opit kuinka toimia, kun sovelluksesi vastaanottaa ilmoituksia ja kun käyttäjät naputtavat niitä.
ymmärtää, mitä tapahtuu, kun saat Push-ilmoituksen
kun sovelluksesi saa push-ilmoituksen, iOS kutsuu menetelmää UIApplicationDelegate
.
sinun täytyy käsitellä ilmoitus eri tavalla riippuen siitä, missä tilassa sovelluksesi on ilmoituksen vastaanottohetkellä:
- Jos sovellus ei ollut käynnissä ja käyttäjä käynnistää sen painamalla push-ilmoitusta, iOS välittää ilmoituksen sovelluksellesi
launchOptions
ofapplication(_:didFinishLaunchingWithOptions:)
. - Jos sovelluksesi oli käynnissä joko etualalla tai taustalla, järjestelmä ilmoittaa sovelluksestasi soittamalla
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Kun käyttäjä avaa sovelluksen napauttamalla push-ilmoitusta, iOS voi soittaa tätä menetelmää uudelleen, joten voit päivittää käyttöliittymän ja näyttää asiaankuuluvat tiedot.
ensimmäisessä tapauksessa wendercast luo uutisen ja avaa suoraan uutiset-välilehteen. Appdelegatessa.swift, lisää application(_:didFinishLaunchingWithOptions:)
, juuri ennen palautuslauseketta:
// 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}
tarkista, onkoUIApplication.LaunchOptionsKey.remoteNotification
olemassa launchOptions
. Jos se tekee, sitten sovellus käynnistettiin ilmoituksen. Tämä sisältää lähettämäsi push – ilmoituksen hyötykuorman.
aps
sanakirja on olemassa, luo sen kanssa NewsItem
.tätä testataksesi sinun täytyy muokata wendercastin kaavaa. Ensin rakentaa ja ajaa asentaa uusimman koodin simulaattori. Sitten, klikkaa WenderCast scheme ja valitse Muokkaa Scheme…:
valitse Suorita sivupalkista, sitten Info-välilehdeltä valitse odota suoritettavaa käynnistystä:
Tämä asetus saa vianetsintätyökalun odottamaan sovelluksen käynnistämistä ensimmäistä kertaa asennuksen jälkeen kiinnitä siihen.
Rakenna ja aja. Kun se on asennettu, lähetä lisää uutisia käyttäen xcrun simctl
kuten ennenkin. Napauta ilmoitusta, ja sovellus avautuu uutisille:
hoitaaksesi tilanteen, jossa sovelluksesi on käynnissä, kun push-ilmoitus on vastaanotettu, lisää AppDelegate
:
func application( _ application: UIApplication, didReceiveRemoteNotification userInfo: , fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { guard let aps = userInfo as? else { completionHandler(.failed) return } NewsItem.makeNewsItem(aps)}
tämä yrittää purkaa aps: n toimitetusta userInfo
objekti ja onnistuessaan luo siitä uuden NewsItem
.
koska iOS kutsuu tätä menetelmää sovelluksen ollessa käynnissä, sinun täytyy muuttaa järjestelmä Takaisin käynnistämään sovellus automaattisesti testataksesi sitä. Valitse Järjestelmäeditorissa käynnistämisen alla automaattisesti.
Rakenna ja aja. Pidä sovellus käynnissä etualalla ja uutiset-välilehdellä. Lähetä toinen uutispainotusilmoitus ja katso, miten se näkyy syötteessä:
That ’ s it! Sovellus nyt voi maagisesti vastaanottaa uutisia, koska se tapahtuu. :]
toimivalla ilmoituksella
toimivalla ilmoituksella voit lisätä mukautettuja painikkeita itse ilmoitukseen. Olet ehkä huomannut tämän Sähköposti-ilmoituksissa tai tweeteissä, joissa voit ”vastata” tai ”suosikki” paikan päällä.
sovelluksesi voi kategorioiden avulla määritellä toiminnallisia ilmoituksia, kun rekisteröidyt ilmoituksiin. Kussakin ilmoitusluokassa voi olla muutama ennalta mukautettu toiminto.
kun palvelin on rekisteröity, se voi määrittää push-ilmoituksen luokan. Vastaavat toiminnot ovat käyttäjän saatavilla, kun ne on vastaanotettu.
Wendercastille määritellään Uutisluokka, jossa on mukautettu toiminto nimeltä View. Tämä toiminto antaa käyttäjille mahdollisuuden tarkastella uutisia sovelluksen, jos he haluavat.
In registerForPushNotifications()
, aseta seuraava suojuksen alapuolelle ja getNotificationSettings()
:
// 1let viewAction = UNNotificationAction( identifier: Identifiers.viewAction, title: "View", options: )// 2let newsCategory = UNNotificationCategory( identifier: Identifiers.newsCategory, actions: , intentIdentifiers: , options: )// 3UNUserNotificationCenter.current().setNotificationCategories()
käy läpi tämä, askel askeleelta:
- Luo uusi ilmoitustoiminto, jonka otsikkonäkymä on painikkeessa ja joka avaa sovelluksen etualalla käynnistettäessä. Toiminnolla on erillinen tunniste, jota iOS käyttää erottaakseen muut saman ilmoituksen toiminnot toisistaan.
- Määrittele uutisluokka, joka sisältää katselutoiminnon. Tällä on myös erillinen tunniste, jonka hyötykuormasi on sisällettävä määrittääkseen, että push-ilmoitus kuuluu tähän luokkaan.
- Rekisteröi uusi toimintakelpoinen ilmoitus soittamalla
setNotificationCategories
.
Rakenna ja suorita sovellus uusien ilmoitusasetusten rekisteröimiseksi.
Taustoita sovellus ja lähetä sitten seuraava hyötykuorma xcrun simctl
utility:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
kun ilmoitus ilmestyy, vedä se alas paljastaaksesi Näkymätoiminnon:
nice! Näkymän naputtelu käynnistää wendercastin, mutta se ei tee vielä mitään jännittävää. Saadaksesi sen näyttämään uutisen, sinun täytyy tehdä hieman enemmän tapahtumien käsittelyä delegaatissa.
Ilmoitustoimien käsittely
aina kun ilmoitustoimi käynnistyy, UNUserNotificationCenter
ilmoittaa asiasta valtuutetulleen. Takaisin Appdelegatessa.swift, lisää tiedoston alaosaan seuraava luokkalaajennus:
// 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() }}
Tämä on takaisinsoitto, jonka saat, kun sovellus avautuu mukautetun toiminnon takia. Saattaa näyttää siltä, että on paljon tekeillä, mutta tässä ei ole paljon uutta:
- Hanki
userInfo
sanakirja. - Luo
NewsItem
aps
sanakirja ja siirry Uutiset-välilehteen. - Tarkista
actionIdentifier
. Jos kyseessä on” View” – toiminto ja linkki on kelvollinen URL, se näyttää linkin muodossaSFSafariViewController
. - Soita täydennyskäsittelijälle, jonka järjestelmä välittää sinulle.
on vielä yksi bitti: delegaatti on asetettava UNUserNotificationCenter
. Lisää tämä rivi application(_:didFinishLaunchingWithOptions:)
:
UNUserNotificationCenter.current().delegate = self
Rakenna ja aja. Sulje sovellus uudelleen ja lähetä sitten uusi uutisilmoitus seuraavalla hyötykuormalla:
{ "aps": { "alert": "New Posts!", "sound": "default", "link_url": "https://raywenderlich.com", "category": "NEWS_CATEGORY" }}
vedä ilmoitus alas ja napauta Näkymätoimintoa, ja näet Wendercastin esittävän Safari-näkymäohjaimen heti käynnistämisen jälkeen:
Onneksi olkoon, olet toteuttanut toimimattoman ilmoituksen! Lähetä muutama lisää ja kokeile avata ilmoitus eri tavoin nähdäksesi, miten se käyttäytyy.
lähettäminen oikealle laitteelle
Jos et halua lähettää push-ilmoituksia oikealle laitteelle tai et vielä tarvitse hiljaisia push-ilmoituksia, Voit ohittaa tämän osion ja mennä minne mennä tästä?
Jos kuitenkin haluat saada tuntumaa push-ilmoitusten lähettämiseen oikealle laitteelle ja kokeilla silent pushia, sinun on tehtävä joitakin lisäasetuksia. Lataa PushNotifications-apuohjelma. Käytät tätä apuohjelmaa lähettääksesi ilmoituksia oikealle laitteelle. Voit asentaa sen noudattamalla ohjeita asennus. Kiinnitä erityistä huomiota sovelluksen avaamiseen, koska sinun täytyy muuttaa joitakin asetuksia tämän apuohjelman suorittamiseksi.
suuntaa Apple Developer Member Centeriin ja kirjaudu sisään.
push-ilmoitusten lähettäminen vaatii Tunnistautumisavaimen. Valitse jäsenkeskuksessa varmenteet, tunnisteet & profiilit ja etsi sitten avaimet vasemmasta ruudusta. Näppäinten otsikon oikealla puolella on + – painike. Napsauta sitä luodaksesi uuden avaimen.
Anna avaimelle nimi, kuten Push Notification Key. Valitse keskeisten palveluiden kohdasta Apple Push Notifications service (APNs).
Napsauta Jatka ja rekisteröidy sitten seuraavalle näytölle luodaksesi uuden avaimen. Napauta Lataa. Ladattu tiedosto on nimi jotain AuthKey_4SVKWF966R. p8. Pidä kirjaa tästä tiedostosta-tarvitset sitä ilmoitusten lähettämiseen! Tiedostonimen 4svkwf966r-osa on avaintunnus. Tarvitset myös tämän.
viimeinen pala, jonka tarvitset, on tiimisi tunnus. Siirry jäsenkeskuksen jäsentiedot-sivulle löytääksesi sen.
teit sen! Uudella avaimellasi olet nyt valmis lähettämään ensimmäisen push-ilmoituksen! Tarvitset vielä yhden asian.
Suorita sovellus oikealla laitteellasi ja kopioi laitetunniste debuggerikonsolista ja pidä se valmiina.
Käynnistä Pushnotifikaatiot ja suorita seuraavat vaiheet:
- Autentikaatiossa valitse Token.
- napsauta Valitse P8-painiketta ja valitse.P8 tiedosto edellisestä osasta.
- syötä Avaintunnuksesi ja Joukkuetunnuksesi asiaankuuluviin kenttiin.
- Under Body, syötä sovelluksesi Bundle ID ja laitetunnuksesi.
- muuta pyynnön runko tämän näköiseksi:
{ "aps": { "alert": "Breaking News!", "sound": "default", "link_url": "https://raywenderlich.com" }}
Napsauta Lähetä-painiketta Painonumeroissa.
sinun pitäisi saada push-ilmoitus:
vianmääritys yleiset ongelmat
tässä on pari ongelmaa, joita saatat kohdata:
- jotkut ilmoitukset saapuvat, mutta eivät kaikki: Jos lähetät useita push-ilmoituksia samanaikaisesti, mutta saat vain muutaman, älä pelkää! Se on suunniteltu. APNs ylläpitää QoS (palvelun laatu) – jonoa jokaiselle laitteelle. Tämän jonon koko on 1, joten jos lähetät useita ilmoituksia, viimeinen ilmoitus ohitetaan.
- ongelma yhteyden muodostamisessa Push-ilmoituspalveluun: yksi mahdollisuus voi olla, että APNS: n käyttämiä portteja estää palomuuri. Muista avata portit.
käyttämällä hiljaisia Push-ilmoituksia
Hiljaiset push-ilmoitukset voivat herättää sovelluksen äänettömästi suorittamaan joitain tehtäviä taustalla. Wendercast voi käyttää tätä ominaisuutta päivittääkseen podcast-listan hiljaisesti.
kunnollisella palvelinkomponentilla tämä voi olla erittäin tehokasta. Sovellus ei tarvitse jatkuvasti kyselyn tietoja. Voit lähettää sille hiljaisen push-ilmoituksen aina, kun uutta tietoa on saatavilla.
aloittaaksesi valitse wendercast kohde uudelleen. Napsauta nyt allekirjoitus & valmiudet-välilehteä ja lisää Taustatilojen valmiudet. Tarkista sitten Remote notifications-asetus:
nyt sovelluksesi herää taustalla, kun se saa yhden näistä push-ilmoituksista.
Appdelegatessa.swift, find application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
. Korvaa Soitto NewsItem.makeNewsItem()
seuraavasti:
// 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)}
menee koodin yli:
- tarkistat, onko
content-available
asetettu 1. Jos näin on, kyseessä on hiljainen ilmoitus. - päivität podcast-listan, joka on asynkroninen verkkokutsu.
- kun päivitys on valmis, soita täydennyskäsittelijälle ja kerro järjestelmälle, latasiko sovellus uusia tietoja.
- Jos se ei ole hiljainen ilmoitus, niin se on uutinen, joten tee uutinen.
muista soittaa täydennyskäsittelijälle rehellisin tuloksin. Järjestelmä mittaa akun kulutusta ja aikaa, että sovellus käyttää taustalla ja voi kuristaa sovelluksen tarvittaessa.
That ’ s all there is to it. Voit testata sitä, rakentaa ja ajaa, etualalla sovelluksen ja työntää seuraavan hyötykuorman kautta PushNotifications apuohjelma:
{ "aps": { "content-available": 1 }}
Jos kaikki menee hyvin, mitään ei pitäisi tapahtua, ellei etätietokantaan juuri lisätty uutta podcastia. Vahvistaaksesi koodin suorituksen odotetusti, aseta raja-arvo application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
ja käy se läpi ilmoituksen lähettämisen jälkeen.
minne tästä eteenpäin?
onnea! Olet suorittanut tämän opetusohjelman ja tehnyt wendercast täysin varustellun sovelluksen push-ilmoituksilla!
voit ladata valmiin projektin käyttämällä tämän opetusohjelman ylä-tai alareunassa olevaa Download Materials-painiketta.
Haluatko sukeltaa syvemmälle kaikkeen, mitä voit tehdä push-ilmoituksilla, kuten omien UIs: iden rakentamiseen ja kriittisten hälytysten lähettämiseen? Push Notifications by Tutorials-kirjamme opettaa sinulle push-ilmoitusten lisäominaisuuksia.
toinen resurssi on iOS: n Push Notifications Tutorial: Rich Push Notifications tutorial.
vaikka push-ilmoitukset ovat tärkeä osa nykyaikaisia sovelluksia, on myös hyvin yleistä, että käyttäjät kieltäytyvät käyttöoikeuksista sovellukseesi, jos ilmoitukset menevät överiksi. Mutta harkittu suunnittelu, push-ilmoitukset voivat pitää käyttäjät tulevat takaisin sovelluksen uudelleen ja uudelleen!
Tämä kissa sai push-ilmoituksen, että hänen ruokansa oli valmis!
toivottavasti olet nauttinut tästä push notifications-opetusohjelmasta. Jos sinulla on kysyttävää, voit jättää ne alla olevalle keskustelufoorumille.
raywenderlich.com viikoittain
raywenderlich.com uutiskirje on helpoin tapa pysyä ajan tasalla kaikesta, mitä sinun tarvitsee tietää mobiilikehittäjänä.
Hanki viikottainen kooste tutoriaaleistamme ja kursseistamme, ja saat bonuksena ilmaisen syvällisen sähköpostikurssin!
keskimääräinen luokitus
4.9 / 5
lisää luokitus tälle sisällölle
Sign in to add a rating
17 ratings