push-ilmoitusten testaaminen simulaattori-ja tuotantosovelluksissa

Khoa Pham
Khoa Pham

seuraa

loka 12, 2020 * 10 min lukea

jälkeen on äskettäin muistuttanut hänen päivittämisestä APNs provider API joka saa minut ymmärtänyt paljon on muuttunut noin push-ilmoitukset, sekä asiakkaan ja Tarjoajan lähestymistapa.

HTTP / 2-pohjaisen Apple Push Notification service (APNs) provider API: n avulla voit hyödyntää hienoja ominaisuuksia, kuten todennusta JSON Web Tokenilla, parannettua virheviestintää ja ilmoituskohtaista palautetta. Jos lähetät push-ilmoituksia legacy binary protocol-protokollalla, suosittelemme päivittämistä APNs provider API-sovellusliittymään.

iOS-asiakasnäkökulmasta sinun ei tarvitse välittää provider API: sta, sillä sinun tarvitsee vain rekisteröityä push-ilmoitusvalmiuteen ja lähettää laitetunniste backendiin, ja backendin tehtävänä on lähettää push-pyyntö Apple notifications server-palvelimelle.

mutta on hyvä tietää taustalla oleva mekanismi, varsinkin kun haluat tehdä vianmäärityksen push-ilmoituksessa. Koska push-ilmoituksen epäonnistuminen voi johtua monista syistä: se voi johtua jostain epäonnistuneesta logiikasta taustajärjestelmässäsi, tai siitä, että push-varmenne on vanhentunut, tai siitä, että olet lähettänyt väärän laitetunnuksen, että käyttäjä on sulkenut push-käyttöoikeudet asetukset-sovelluksessa, tai että push on viivästynyt.

tässä on myös yleinen lyhennelmä, joka sinun on opittava: APNs se on lyhenne Apple Push-Ilmoituspalvelusta. Voit ajatella sitä palvelimena laitteellasi on aina yhteys, joten olet valmis mihin tahansa palvelimen push-viesteihin siitä.

Push-ilmoitusominaisuuden Apple otti ensimmäisen kerran käyttöön vuonna 2009 melko monimutkaisen binäärioperaattorirajapinnan kautta

lyhyesti sanottuna binäärioperaattorirajapinta on vain määritys siitä, mikä osoite ja missä muodossa push-pyyntö lähetetään Apple push-palvelimelle. Tuotantoympäristön binäärirajapinta on saatavilla gateway.push.apple.com, port 2195 ja kehitysympäristön gateway.sandbox.push.apple.com, port 2195kautta. Binäärirajapinnassa käytetään tavallista TCP-liitäntää luonnossa virtaavalle binäärisisällölle.

kuten yllä olevasta ohjeesta näkyy, tarvitsemme tarkemmat kehyspituudet ja tiedot. Data on keskeinen arvo paria useita tietoja, kuten laitteen token, viimeinen, aihe, prioriteetti.

lähetä pyyntö edellä mainittuihin osoitteisiin suojatun TLS-tai SSL-kanavan kautta. Näissä yhteyksissä tarvittava SSL-varmenne saadaan kehittäjätililtäsi.

Uusi HTTP/2 provider API

Uusi HTTP2/ provider API on suositeltava, siinä on yksityiskohtainen virheilmoitus ja parempi läpimenokyky. Jos käytät URLSession joka tukee HTTP/1.1 ja HTTP/2 protokollia. HTTP / 2 tuki, kuten RFC 7540, tunnet tutuksi.

lyhyesti sanottuna, kun sinulla on ilmoitus lähetettävänä käyttäjälle, palveluntarjoajan on laadittava POSTIPYYNTÖ ja lähetettävä se Apple Push-ilmoituspalveluun (APNs). Pyyntöösi on sisällyttävä seuraavat tiedot:

  • JSON-hyötykuorma, jonka haluat lähettää
  • laitetunniste käyttäjän laitteelle
  • pyyntö-otsikkokentät, joissa täsmennetään, miten ilmoitus toimitetaan
  • token-pohjaiselle todennukselle, palveluntarjoajapalvelimesi nykyinen todennustunniste

saatuaan palvelimesi POSTIPYYNNÖN APNs validoi pyyntö käyttäen joko annettua todennustunnusta tai palvelimen varmennetta. Jos validointi onnistuu, APNs käyttää annettua laitetunnusta käyttäjän laitteen tunnistamiseen. Sitten se yrittää lähettää JSON hyötykuorma että laite.

joten se on aika lailla miten määrität URLRequest kanssa URLSession, määritä perus-url, jotkut pyyntöjen otsakkeet mukaan lukien valtuutus ja hyötykuorman runko.

käytä HTTP/2: ta ja TLS 1.2: ta tai uudempaa luodaksesi yhteyden uuteen provider API-päätepisteeseen. Kehityspalvelimelle se on api.sandbox.push.apple.com:443 ja tuotantopalvelimelle se on api.push.apple.com:443. Tämän jälkeen lähetät pyynnön nimellä POST ja Apple tekee työnsä vahvistaakseen ja lähettääkseen push-ilmoituksen käyttäjien laitteelle.

varmenne vs token-pohjainen todennus

lähettääksesi push-pyynnön APNs: lle sinun on todennettava se todentaaksesi, että se on todella sinulta. APNs tukee 2 todennustyyppiä, perinteistä tapaa varmenteella ja äskettäin uutta suositeltua tapaa P8-tokenilla.

Varmennepohjainen todennus

varmennepohjaista todennusta varten tarvitset P12-varmenteen, jonka voit hankkia ja luoda Kehittäjätililtäsi.

koska on olemassa hiekkalaatikko ja production push endpoint, muutama vuosi sitten vaadittiin erillinen hiekkalaatikko ja tuotantoympäristön push-sertifikaatti, joka sinun piti luoda erikseen Apple-kehittäjätilillesi, sitten testauksessa on määritettävä oikea push-sertifikaatti kullekin ympäristölle.

nyt noin iOS 10 vuosi voimme käyttää vain 1 yhden todistuksen sekä hiekkalaatikko ja tuotanto, mikä on helpotus meille kehittäjille. Kun luomme varmenteen Applen kehittäjäsivulle, meidän on ladattava varmenteen allekirjoituspyyntö, jonka voimme luoda Keychain Access-sovelluksesta. Kun olemme ladanneet generoidun push-sertifikaatin, ladanneet ja ajaneet sen avaimenperässä, voimme luoda p12-avaintiedoston, joka sisältää sekä sertifikaatin että yksityisen avaimen push-pyynnön allekirjoittamiseksi.

sertifikaatti ja valmistusprofiilit voimassa vain 1 vuoden ajan. Joka vuosi pitää siis uusia push-ilmoitustodistukset, mikä on myös hyvä ja huono asia. Sen lisäksi, jokainen sovellus eroaa bundle id, joten meidän tavallaan täytyy luoda sertifikaatti jokaiselle sovellukselle.

Token based authentication

Token-based authentication tarjoaa valtiottoman tavan kommunikoida APNs: n kanssa. Valtioton viestintä on nopeampaa kuin varmennepohjainen viestintä, koska se ei vaadi APNs: ää etsimään varmennetta tai muita tietoja, jotka liittyvät palveluntarjoajasi palvelimeen. Token-pohjaisen todennuksen käytössä on muitakin etuja:

Tokenin hienointa on se, että voit käyttää yhtä tokenia ilmoitusten jakamiseen kaikille yrityksesi sovelluksille. Voit luoda Apple-kehittäjätililläsi. Avaintodennus on suositeltava tapa todentaa Applen palveluilla, joten sitä käytetään push-palveluiden lisäksi myös MusicKit-ja DeviceCheck-palveluissa.

kun pyydät avainta, Apple antaa sinulle 10-merkkisen merkkijonon, jossa on avaintunnus, joka sinun on sisällytettävä JSON tokeniin, ja todennus-token-allekirjoitusavaimen, joka on määritelty tekstitiedostoksi (jossa a .p8 tiedostopääte). Avain saa ladata kerran ja sinun täytyy pitää se oikein.

ilmoituspyyntöihisi sisältyvä token käyttää JSON Web Token (JWT) – määrittelyä. Token itsessään sisältää neljä avainarvoparia

onhan JSON Web Token koodattu tähän authorization HTTP-otsikoihin pyynnössäsi näin

authorization = bearer eyAia2lkIjogIjhZTDNHM1JSWDciIH0.eyAiaXNzIjogIkM4Nk5WOUpYM0QiLCAiaWF0I
jogIjE0NTkxNDM1ODA2NTAiIH0.MEYCIQDzqyahmH1rz1s-LFNkylXEa2lZ_aOCX4daxxTZkVEGzwIhALvkClnx5m5eAT6
Lxw7LZtEQcH6JENhJTMArwLf3sXwi

turvallisuuden vuoksi APNs vaatii sinua päivittämään tokenisi säännöllisesti. Päivitä polettisi enintään kerran 20 minuutissa ja vähintään kerran 60 minuutissa.

push-ilmoitusten rekisteröiminen iOS-sovelluksesta

Etäilmoituksen Rekisteröintirajapinnat ovat muuttuneet vuosien varrella.

iOS 7

iOS 7: ssä meillä oli tapana käyttää tätä menetelmää rekisteröintiin forremotenotificationtypes rekisteröitymään vastaanottamaan määritettyjen tyyppien etäilmoituksia Apple Push-ilmoituspalvelun kautta.

tyypit voivat olla UIRemoteNotificationTypeBadge, UIRemoteNotificationTypeAlert, UIRemoteNotificationTypeSound

kun lähetät tämän viestin, laite käynnistää rekisteröintiprosessin Apple Push-ilmoituspalvelulla. Jos se onnistuu, app-delegaatti saa laitetunnuksen application:didRegisterForRemoteNotificationsWithDeviceToken: – menetelmällä; jos rekisteröinti ei onnistu, delegaatti saa tiedon application:didFailToRegisterForRemoteNotificationsWithError: – menetelmällä. Jos app delegaatti saa laite token, sen pitäisi muodostaa yhteys sen tarjoaja ja siirtää se token.

iOS 8 registerUserNotificationSettings

iOS 8: sta on erotettu etäilmoituksen pyytäminen laitetunnuksella ja push-viestin esittäminen käyttäjälle. Tämä sekava Kehittäjät kuin nämä 2 asiat ovat erillisiä nyt.

ensin käytämme registerForRemoteNotifications-palvelua rekisteröitymään vastaanottamaan etäilmoituksia Apple Push-ilmoituspalvelun kautta.

soita tähän menetelmään aloittaaksesi rekisteröintiprosessin Apple Push-ilmoituspalvelulla. Jos rekisteröinti onnistuu, sovellus kutsuu app delegoi objekti application(_:didRegisterForRemoteNotificationsWithDeviceToken:) menetelmä ja siirtää sen laitteen token. Sinun pitäisi siirtää tämä tunnuksen pitkin palvelimelle käytät luoda etäilmoituksia laitteen. Jos rekisteröinti epäonnistuu, sovellus kutsuu sen sijaan app delegaattinsa application(_:didFailToRegisterForRemoteNotificationsWithError:) – menetelmän.

lyhyesti sanottuna, tämä on saada laite token APNs jotta voimme tehdä hiljainen push ilmoitus tai muita asioita. Huomaa, että meidän on otettava käyttöön Remote notification valmius Taustatiloille.

jos haluat esittää push-viestin käyttäjälle hälytyksen, bannerin, merkin tai äänen kautta, meidän on nimenomaisesti pyydettävä käyttämään tätä menetelmää registerUserNotificationSettings rekisteröi haluamasi vaihtoehdot ilmoittamiseksi käyttäjälle.

jos sovelluksessasi näkyy hälytyksiä, toistoääniä tai sen kuvake, sinun on soitettava tälle menetelmälle käynnistyssyklin aikana ja pyydettävä lupaa varoittaa käyttäjää näillä tavoilla. Soitettuaan tähän menetelmään sovellus kutsuu app-delegaattinsa application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) – menetelmän raportoimaan tulokset. Voit käyttää tätä menetelmää selvittääksesi, onko käyttäjä myöntänyt tai kieltänyt pyyntösi.

iOS 10 käyttäjätunnusten framework

iOS 10: ssä Apple esitteli UserNotifications ja UserNotificationsUI framework ja paljon uusia ominaisuuksia ilmoitusten työntämiseen, kuten toimintoja ja liitteitä.

jos haluat pyytää lupaa esittää push-viestin iOS 10: ltä, käytä uutta UNUserNotificationCenter, joka hyväksyy asetukset ja estää takaisinsoiton myöntämisen statuksella.

UNUserNotificationCenter.current().requestAuthorization(options: )

myös UNNotificationAction ja UNNotificationAttachment on olemassa lisätoimintoja ja liitetiedostoja push-viestin mukana, tämä on erittäin kätevä visuaaliseen tarkoitukseen ja käteviä toimenpiteitä käyttäjä voi suorittaa heti push-viestistä.

mukana on myös kätevä UserNotificationsUI, joka toimitettiin iOS 10: n mukana ja jonka avulla voimme upottaa mukautetun näkymäohjaimen push-viestistämme

kun iOS-laite saa ilmoituksen, joka sisältää hälytyksen, järjestelmä näyttää hälytyksen sisällön kahdessa vaiheessa. Aluksi se näyttää lyhennetyn bannerin, jossa on otsikko, alaotsikko ja kahdesta neljään riviä kehotekstiä ilmoituksesta. Jos käyttäjä painaa lyhennettyä banneria, iOS näyttää koko ilmoitusrajapinnan, mukaan lukien kaikki ilmoitukseen liittyvät toimet. Järjestelmä tarjoaa käyttöliittymän lyhennetty banneri, mutta voit muokata koko käyttöliittymän käyttämällä ilmoituksen sisältöä app laajennus.

on myös tämä callback-käyttäjätunnuksen ilmoituskeskus _: willPresent, joka kysyy valtuutetulta, miten käsitellä ilmoitusta, joka saapui sovelluksen ollessa käynnissä etualalla.

jos sovelluksesi on etualalla ilmoituksen saapuessa, jaetun käyttäjän Ilmoituskeskus kutsuu tätä menetelmää toimittaakseen ilmoituksen suoraan sovellukseesi. Jos otat tämän menetelmän käyttöön, voit ryhtyä tarvittaviin toimiin ilmoituksen käsittelemiseksi tai näyttää sen, kun sovelluksesi on käynnissä.

iOS 12 väliaikaisella painalluksella

uutta iOS 12: ssa on UNAuthorizationStatus.provisional, jotka ovat ilmoituksia, jotka näkyvät äänettömästi käyttäjän ilmoituskeskuksessa ilman, että näkyvät käyttäjän aloitusnäytössä. Voimme aloittaa niiden lähettämisen heti, kun käyttäjä on ladannut ja suorita sovelluksesi ensimmäistä kertaa. Voit lähettää väliaikaisia push-ilmoituksia rajattomasti, ellei käyttäjä nimenomaisesti sammuta niitä.

tämä on hyvä lähettää huomaamaton push käyttäjille heidän Ilmoituskeskus, jossa he voivat poimia myöhemmin.

Testing push notification in simulator

olemme jo vuosia pystyneet raahaamaan kuvia simulaattorissa Kuvat-sovellukseen, mutta uutta Xcode 11: ssä.4 on kyky vetää push hyötykuorma simulaattoriin simuloida etäpainotusilmoitusta.

meidän tarvitsee vain luoda apns tiedosto, jossa on Simulator Target Bundle avain sovelluksemme määrittelyyn, ja vetää sitten simulaattoriin

{
"Simulator Target Bundle": "com.onmyway133.PushHero",
"aps": {
"alert": "Welcome to Push Hero",
"sound": "chime",
"badge": 2
}
}

monia simulaattorin ominaisuuksia voidaan ohjata xcrun simctlkomentorivityökalulla, jossa voit muuttaa tilarivin aikaa, akun tietoja, käynnistää ja pysäyttää tiettyjä simulaattoreita ja lähettää push kanssa xcrun simctl push. Tämä on erittäin kätevä, jos haluat automatisoida asioita.

Test push-ilmoitus helposti Push Herolla

iOS-kehittäjinä, jotka joutuvat testaamaan push-ilmoitusta paljon, kohtaan tämän haasteen. Siksi tein Push Heron natiivina macOS-sovelluksena, jonka avulla voimme luotettavasti testata push-ilmoitusta. Se on kirjoitettu puhdasta Swift kaikki uudet APNs erittely mielessä.

Push Hero, voimme setup useita testi skenaario eri app. Jokainen voimme määrittää haluamamme todennusmenetelmän, joko P8 Tokenin tai P12-varmenteen perusteella. On myös input validation ja vihje helper, joka selittää, mikä kenttä tarvitaan ja missä muodossa, joten säästät aikaa työskennellä push testaus sen sijaan.

uutta Push Heron uusimmassa versiossa on kyky lähettää useita työntöjä useille laitetunnisteille, mikä on yleisin pyyntö. Oikeassa historiaruudussa on tietoja jokaisesta pyyntö-ja vastaussisällöstä sekä apns id-tiedot ja syy-selitys.

johtopäätös

Push-Ilmoitus on edelleen tärkeä iOS-sovelluksille, ja Apple on vuosien varrella parantanut ja muuttanut sitä parempaan suuntaan. Tämä merkitsee myös paljon tietoa, jonka perässä pitää pysyä. Ymmärtäminen tarjoaja APNs, perustamalla varmenteen ja JSON Web Token key voi olla pelottava ja vie aikaa.

toivottavasti yllä oleva yhteenveto antaa sinulle enemmän ymmärrystä push-ilmoitukseen, ei vain asiakas-ja palveluntarjoajarajapinnan muutosten historiaa, vaan myös joitakin tapoja testata sitä helposti.

Vastaa

Sähköpostiosoitettasi ei julkaista.