Apple introducerade ursprungligen push-meddelanden för att aktivera program för att svara på händelser om programmet inte körs i förgrunden. Operativsystemet och iOS-enheterna har emellertid ändrats avsevärt under de senaste åren och applikationer behöver inte förlita sig endast på push-meddelanden för att utföra uppgifter i bakgrunden.
Det betyder inte att push notifieringar inte längre är användbara. Push-meddelanden är bra att anmäla en ansökan om viktiga händelser och för att behålla användarnas användares engagemang. Glöm inte heller att ett program fortfarande inte får springa i bakgrunden utan begränsningar. Med andra ord är det ursprungliga ändamålet med push-meddelanden fortfarande giltigt.
Även de mest erfarna iOS-utvecklarna klarar sina huvuden från tid till annan när de måste hantera programleverans. Tyvärr, push notifieringar lägger till denna komplexitet. Med denna handledning hoppas jag kunna visa dig att det inte är en mardröm att skapa push-meddelanden. Följ med och jag lovar att du kommer att skicka push-meddelanden på nolltid.
Om du letar efter en snabb lösning kan du prova AZNotification: Notifications for iPhone på Envato Market, vilket gör att du enkelt kan skapa attraktiva meddelanden på nolltid. Meddelandena faller från navigeringsfältet och kan visa information såväl som felmeddelanden. Eller hyr en Envato Studio apputvecklare för att hjälpa dig.
AZNotification: Meddelanden för iPhoneDu behöver två saker om du vill följa med mig. Det första du behöver är en fysisk enhet för att ta emot push-meddelanden, eftersom iOS-simulatorn inte stöder push-meddelanden. Det andra du behöver är ett betalt iOS-utvecklare konto. Endast betalda konton kan tillhandahålla applikationer som ska köras på en fysisk enhet.
Målet med denna handledning är att bygga en applikation som är inställd för att ta emot push-meddelanden. Öppna Xcode och skapa ett nytt projekt baserat på Enkel visningsprogram mall.
Namn på projektet Tryck, ange en företagsidentifierare och klassprefix och ställ in enheter till iPhone.
Trots att jag inte kommer att diskutera nitty-gritty backend-infrastrukturen för push-meddelanden är det viktigt att du vet och förstår vad din ansökan behöver göra för att få push-meddelanden och varför det gör det här.
Öppna TSPAppDelegate.m och uppdatera applikations: didFinishLaunchingWithOptions:
enligt nedanstående. Vi ringer registerForRemoteNotificationTypes:
på Ansökan
objekt som passerar i de meddelandetyper som vi är intresserade av. Operativsystemet vet nu att applikationen är intresserad av att ta emot push-meddelanden.
- (BIA) ansökan: (UIApplication *) ansökan didFinishLaunchingWithOptions: (NSDictionary *) launchOptions // Registrera för fjärrmeddelanden [application registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; returnera JA;
Operativsystemet kontaktar Apples servrar och får en enhetstoken för att unikt identifiera enheten som programmet körs på. Denna enhetstoken används av din serverinfrastruktur för att skicka push-meddelanden. Det gör det genom att skicka enhetstoken tillsammans med den faktiska push-noteringen till Apples servrar. Apples servrar ansvarar för att distribuera push-meddelandena till lämpliga enheter.
Observera att enhetstoken skiljer sig åt för varje applikation och det kan även ändras över tiden för samma applikation. Apple rekommenderar därför att du frågar om en enhetstoken varje gång programmet startas och skicka enhetstoken till din baksida för att kontrollera att enhetstoken är uppdaterad.
Om du använder en tjänst som Parse eller Urban Airship, så är det något du inte behöver oroa dig för. I så fall behöver du bara skicka backend-enheten iOS-händer till dig.
De metoder som berättar för din ansökan om du registrerar dig för fjärranslutna meddelanden är framgångsrika eller inte applikation: didRegisterForRemoteNotificationsWithDeviceToken:
och applikation: didFailToRegisterForRemoteNotificationsWithError:
respektive. För nu implementera dessa metoder som visas nedan.
- (void) ansökan: (UIApplication *) ansökan gjordeRegisterForRemoteNotificationsWithDeviceToken: (NSData *) deviceToken NSLog (@ "Registrerade för fjärrmeddelanden med Device Token (% @)", DeviceToken);
- (void) -applikation: (UIApplication *) ansökan didFailToRegisterForRemoteNotificationsWithError: (NSError *) fel NSLog (@ "Misslyckades med att registrera för fjärrmeddelanden"); NSLog (@ "% @,% @", fel, error.localizedDescription);
Båda metoderna deklareras av UIApplicationDelegate
protokoll. Detta protokoll förklarar också en annan metod, applikation: didReceiveRemoteNotification:
, som påkallas när programmet mottar en fjärranslutning. Det är upp till dig att hantera inkommande push-meddelanden. De applikation: didReceiveRemoteNotification:
metod hämtar du nyttolasten för push notification som en NSDictionary
objekt. Din ansökan måste bestämma hur det ska reagera på push notification.
Om du kör din ansökan, då applikation: didFailToRegisterForRemoteNotificationsWithError:
Metoden kommer att åberopas. Det här är inte förvånande eftersom vi inte har slutat konfigurera vår ansökan om push-meddelanden. Som en påminnelse stöds inte fjärrmeddelanden av iOS-simulatorn. Du behöver en fysisk enhet för att slutföra denna handledning.
För att slutföra nästa steg måste du logga in på ditt iOS-utvecklarkonto på Apples iOS Dev Center. Välja identifierare från iOS Apps sektioner.
Klicka på plusknappen längst upp till höger och skriv in en App ID-beskrivning. Det här hjälper dig att identifiera App ID senare.
Du kan lämna App ID Prefix som det är, men det App ID Suffix måste ställas in på Explicit App ID, istället för Wildcard App ID. Om du vill att ett program ska ta emot fjärrmeddelanden måste du använda en Explicit App ID, som com.tutsplus.push, istället för com.tutsplus. *.
I avsnittet App Tjänster, Gör det möjligt Pushnotifikationer. Klick Fortsätta att skicka in formuläret och klicka Lämna för att skapa app-id.
På listan med App ID-enheter väljer du den du just skapat och klickar på Redigera knappen under den. Bläddra ner tills du ser avsnittet som täcker push-meddelanden. Du bör se två knappar märkta Skapa certifikat ... enligt nedanstående.
Som jag nämnde tidigare kommunicerar din backend med Apples servrar för att skicka fjärrmeddelanden till din ansökan. Din backend skickar fjärrmeddelanden till din ansökan via Apples servrar. Av denna anledning måste Apple veta att endast dina servrar kan ansluta till sina servrar. Du vill inte att någon annan ska skicka fjärrmeddelanden till din ansökan.
Apple kräver därför att du skapar ett SSL-certifikat. Många utvecklare cringe på orden "certifikat" och "provisioning", men det är verkligen inte så svårt. Följ med och du är redo på mindre än två minuter.
Öppna Nyckelring Access på din utvecklingsmaskin och välj Certifikatassistent> Begär ett certifikat från en certifikatmyndighet ... från Nyckelring Access meny. Dubbelkontrollera att ingen knapp har valts i Nyckelring Access när du väljer det här alternativet.
Ange en e-postadress och a Vanligt namn att identifiera certifikatet senare. Lämna CA Email fältet tomt och välj Sparade till disk. Klick Fortsätta och spara certifikatsigneringsförfrågan på din hårddisk.
Du har skapat några saker genom att slutföra detta steg. Du har skapat en certifikatsigneringsförfrågan, såväl som en offentlig och privat nyckel. Nycklarna ska vara synliga i Nyckelring Access enligt nedanstående.
Gå tillbaka till iOS Dev Center och klicka på Skapa certifikat ... knapp som vi såg tidigare. Apple berättar vilka steg du behöver vidta för att skapa certifikatsigneringsförfrågan, men vi har redan slutfört dem. Klick Fortsätta, ladda upp certifikatsigneringsförfrågan genom att klicka på Välj FIL… knappen och träffa Generera att generera SSL-certifikatet.
Som Apple instruerar, ladda ner certifikatet och dubbelklicka på det för att installera det Nyckelring Access. Kontrollera att certifikatet har lagts till i Nyckelring Access och kopplad till rätt privat nyckel.
Nästa steg, programtillhandahållande, är något som går upp på många utvecklare. Låt mig gå igenom dig.
Innan vi kan testa vår push notifications setup måste vi skapa en provisioningprofil för vår applikation. I iOS Dev Center väljer du Utveckling i Provisioning Profiler sektion. Klicka på plusknappen längst upp till höger och välj iOS App Development under Utveckling sektion.
Klick Fortsätta och välj ditt App ID från listan. Välj de certifikat du vill inkludera i provisioneringsprofilen och klicka på Fortsätta. Eftersom vi skapar en provisioningprofil för utveckling, måste vi också ange vilka enheter som behöver ingå i provisioneringsprofilen. Se till att din testenhet ingår. Ge provisioningprofilen ett förnuftigt namn och klicka på Generera.
Ladda ner provisioningprofilen och dra den i Xcode för att lägga till den. Uppdatera ditt måls byggnadsinställningar i Xcode för att använda den nya provisioningprofilen. Bygg och kör din ansökan för att se till att allt fungerar som förväntat.
Om du stöter på problem, dubbelklicka sedan på att buntidentifieraren för din ansökan överensstämmer med App-ID-numret. Observera att en paketidentifierare är skiftlägeskänslig.
Om du har följt de steg som beskrivs i den här handledningen ska din ansökan informera dig om följande meddelande.
Om du trycker på ok, din ansökan kommer att fråga operativsystemet för en enhetstoken. Om detta lyckas, applikation: didRegisterForRemoteNotificationsWithDeviceToken:
metod för UIApplicationDelegate
protokollet åberopas, ger dig enhetstoken. Eftersom vi lagt till ett loggutdrag för denna metod, bör enhetstoken också vara inloggad i konsolen i Xcode.
Push [2182: 60b] Registrerade för fjärrmeddelanden med Device Token (<131cec1a 64cf8f4c 80009196 6157311d c774df92 056c74c2 e5538e52 db4848f1>)
För att testa om eventuella push-meddelanden du skickar anländer måste du ha en backend på plats för att din ansökan kan skicka enhetstoken till. Den bakåt kan sedan anslutas med Apples servrar för att skicka push-meddelanden.
Jag kommer inte att täcka denna aspekt av push-meddelanden i denna handledning, men det här är den enkla delen av push-meddelanden, speciellt om du använder en tjänst som Parse eller Urban Airship.
Du kan också använda Houston, en Ruby pärla som utvecklats av Mattt Thompson, vilket gör det enkelt att skicka push notifieringar.
Jag hoppas att denna handledning har visat dig att push-meddelanden inte är lika svåra att konfigurera som de flesta utvecklare tror. Det är sant att det tar lite fitta med nycklar och certifikat, men när du förstår de rörliga delarna är det inte så svårt att förstå och ställa upp.
Sanningen är att den svåra delen är att skapa nycklar och certifikat. Hantering av push-meddelanden i din iOS-applikation är väldigt enkelt och enkelt.