Apple heeft oorspronkelijk pushmeldingen geïntroduceerd om applicaties in staat te stellen te reageren op evenementen als de applicatie niet op de voorgrond draait. Het besturingssysteem en iOS-apparaten zijn de afgelopen jaren echter aanzienlijk veranderd en applicaties hoeven niet alleen te vertrouwen op pushmeldingen om taken op de achtergrond uit te voeren.
Dit betekent echter niet dat pushmeldingen niet langer nuttig zijn. Pushmeldingen zijn geweldig om een app op de hoogte te stellen van belangrijke gebeurtenissen en om de gebruikers van uw applicatie betrokken te houden. Vergeet ook niet dat een toepassing nog steeds niet zonder beperkingen op de achtergrond mag worden uitgevoerd. Met andere woorden, het oorspronkelijke doel van pushmeldingen is nog steeds geldig.
Zelfs de meest ervaren iOS-ontwikkelaars krabben af en toe hun hoofd wanneer ze te maken hebben met applicatie-provisioning. Helaas voegen pushmeldingen deze complexiteit toe. Met deze zelfstudie hoop ik je te laten zien dat het instellen van pushmeldingen geen nachtmerrie hoeft te zijn. Volg mee en ik beloof dat je binnen de kortste keren pushmeldingen zult verzenden.
Als u op zoek bent naar een snelle oplossing, kunt u AZNotification: Notifications for iPhone op Envato Market uitproberen, waarmee u snel aantrekkelijke meldingen kunt maken. De meldingen vallen uit de navigatiebalk en kunnen informatie- en foutmeldingen weergeven. Of huur een app-ontwikkelaar van Envato Studio om u te helpen.
AZNotification: Meldingen voor iPhoneJe hebt twee dingen nodig als je me wilt volgen. Het eerste dat u nodig hebt, is een fysiek apparaat om pushmeldingen te ontvangen, omdat de iOS-simulator geen pushmeldingen ondersteunt. Het tweede dat je nodig hebt, is een betaald iOS-ontwikkelaarsaccount. Alleen betaalde accounts kunnen aanvragen uitvoeren op een fysiek apparaat.
Het doel van deze zelfstudie is om een applicatie te bouwen die is ingesteld om pushmeldingen te ontvangen. Open Xcode en maak een nieuw project op basis van de Toepassing enkele weergave sjabloon.
Geef het project een naam Duwen, voer een bedrijfsidentificatie en klassenprefix in en stel in apparaten naar iPhone.
Hoewel ik de nitty-gritty-backend-infrastructuur van pushmeldingen niet zal bespreken, is het belangrijk dat u weet en begrijpt wat uw toepassing moet doen om pushmeldingen te ontvangen en waarom dit dit doet.
Open TSPAppDelegate.m en werk het toepassing: didFinishLaunchingWithOptions:
zoals hieronder getoond. Wij bellen registerForRemoteNotificationTypes:
op de toepassing
object, waarbij we de meldingstypen doorgeven waarin we geïnteresseerd zijn. Het besturingssysteem weet nu dat de toepassing geïnteresseerd is in het ontvangen van pushmeldingen.
- (BOOL) toepassing: (UIApplication *) toepassing didFinishLaunchingWithOptions: (NSDictionary *) launchOptions // Registreren voor externe meldingen [toepassingsregisterForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; terugkeer JA;
Het besturingssysteem maakt contact met de servers van Apple en verkrijgt een apparaattoken om op unieke wijze het apparaat te identificeren waarop de applicatie draait. Dit apparaattoken wordt gebruikt door uw serverinfrastructuur om pushmeldingen te verzenden. Dit doet het door het token van het apparaat samen met de daadwerkelijke pushmelding naar de servers van Apple te verzenden. De servers van Apple zijn verantwoordelijk voor het distribueren van de pushmeldingen naar de juiste apparaten.
Merk op dat het token van het apparaat verschilt voor elke applicatie en dat het zelfs in de loop van de tijd kan veranderen voor dezelfde applicatie. Apple raadt daarom aan om elke keer dat de toepassing wordt gestart een apparaattoken te vragen en het apparaattoken naar uw back-end te sturen om te controleren of het token up-to-date is.
Als je een service als Parse of Urban Airship gebruikt, hoef je je daar geen zorgen over te maken. In dat geval hoeft u alleen de back-end te verzenden van het apparaatstoken dat iOS u geeft.
De methoden die uw toepassing vertellen of registreren voor meldingen op afstand succesvol is of niet zijn toepassing: didRegisterForRemoteNotificationsWithDeviceToken:
en toepassing: didFailToRegisterForRemoteNotificationsWithError:
respectievelijk. Implementeer deze methoden vooralsnog zoals hieronder getoond.
- (ongeldige) toepassing: (UIApplication *) toepassing didRegisterForRemoteNotificationsWithDeviceToken: (NSData *) deviceToken NSLog (@ "Heeft zich aangemeld voor externe meldingen met apparaattoken (% @)", deviceToken);
- (ongeldige) toepassing: (UIApplication *) toepassing didFailToRegisterForRemoteNotificationsWithError: (NSError *) error NSLog (@ "Did Fail to to Register for Remote Notifications"); NSLog (@ "% @,% @", error, error.localizedDescription);
Beide methoden worden verklaard door de UIApplicationDelegate
protocol. Dit protocol verklaart ook een andere methode, toepassing: didReceiveRemoteNotification:
, die wordt aangeroepen wanneer de toepassing een melding op afstand ontvangt. Het is aan jou om inkomende pushmeldingen af te handelen. De toepassing: didReceiveRemoteNotification:
methode geeft u de payload van de pushmelding als een NSDictionary
voorwerp. Uw toepassing moet beslissen hoe deze moet reageren op de pushmelding.
Als u uw toepassing uitvoert, dan is de toepassing: didFailToRegisterForRemoteNotificationsWithError:
methode wordt aangeroepen. Dit is niet verrassend, omdat we nog niet klaar zijn met het instellen van onze toepassing voor pushmeldingen. Ter herinnering, externe meldingen worden niet ondersteund door de iOS Simulator. U hebt een fysiek apparaat nodig om deze zelfstudie te voltooien.
Om de volgende stap te voltooien, moet u inloggen op uw iOS-ontwikkelaarsaccount bij het iOS Dev Center van Apple. Kiezen identifiers van de iOS-apps secties.
Klik op de plusknop in de rechterbovenhoek en voer een App ID-beschrijving. Dit helpt u de app-ID later te identificeren.
Je kunt de Voorvoegsel app-ID zoals is, maar de App-ID achtervoegsel moet worden ingesteld op Expliciete app-ID, in plaats van Wildcard-app-ID. Als u wilt dat een toepassing externe meldingen ontvangt, moet u een Expliciete app-ID, zoals com.tutsplus.push, in plaats van com.tutsplus. *.
In de sectie App-services, in staat stellen Push-meldingen. Klik Doorgaan met om het formulier in te dienen en op te klikken voorleggen om de app-ID te maken.
Selecteer de app die u zojuist hebt gemaakt in de lijst met app-ID's en klik op de Bewerk knop eronder. Blader naar beneden tot je het gedeelte ziet dat pushmeldingen dekt. U zou twee knoppen moeten zien gemarkeerd Certificaat maken ... zoals hieronder getoond.
Zoals ik eerder al zei, communiceert uw backend met de servers van Apple om externe meldingen naar uw applicatie te sturen. Uw backend stuurt externe meldingen naar uw applicatie via de servers van Apple. Om deze reden moet Apple weten dat alleen uw servers verbinding kunnen maken met hun servers. U wilt niet dat iemand anders externe meldingen naar uw toepassing stuurt.
Apple vereist daarom dat u een SSL-certificaat maakt. Veel ontwikkelaars kruipen in de huid van de woorden "certificaten" en "provisioning", maar het is echt niet zo moeilijk. Volg en je bent binnen twee minuten klaar.
Open Sleutelhangertoegang op uw ontwikkelingsmachine en selecteer Certificaatassistent> Vraag een certificaat aan bij een certificeringsinstantie ... van de Sleutelhangertoegang menu. Controleer nogmaals of er geen sleutel is geselecteerd in Sleutelhangertoegang wanneer u deze optie selecteert.
Voer een e-mailadres in en een Gemeenschappelijke naam om het certificaat later te identificeren. Verlaat de CA Email veld leeg en selecteer Opgeslagen op schijf. Klik Doorgaan met en bewaar de certificaat ondertekeningsverzoek op uw harde schijf.
U hebt een aantal dingen gemaakt door deze stap te voltooien. U hebt een ondertekenverzoek voor certificaten gemaakt, evenals een openbare en persoonlijke sleutel. De sleutels moeten zichtbaar zijn in Sleutelhangertoegang zoals hieronder getoond.
Ga terug naar het iOS Dev Center en klik op de Certificaat maken ... knop die we eerder zagen. Apple vertelt je welke stappen je moet nemen om het ondertekenverzoek voor certificaten te maken, maar we hebben deze al voltooid. Klik Doorgaan met, upload het certificaat ondertekeningsverzoek door op de Kies bestand… knop en druk op voortbrengen om het SSL-certificaat te genereren.
Zoals Apple aangeeft, downloadt u het certificaat en dubbelklikt u erop om het te installeren Sleutelhangertoegang. Controleer nogmaals of het certificaat is toegevoegd Sleutelhangertoegang en gekoppeld aan de juiste privésleutel.
De volgende stap, application provisioning, is iets dat veel ontwikkelaars op de been brengt. Laat me je er doorheen leiden.
Voordat we onze pushmeldingen kunnen testen, moeten we een provisioningprofiel maken voor onze applicatie. Selecteer in het iOS Dev Center Ontwikkeling in de Provisioning Profiles sectie. Klik op de plusknop in de rechterbovenhoek en selecteer iOS App-ontwikkeling onder de Ontwikkeling sectie.
Klik Doorgaan met en selecteer uw app-ID in de lijst. Selecteer de certificaten die u in het inrichtingsprofiel wilt opnemen en klik op Doorgaan met. Omdat we een provisioningprofiel voor ontwikkeling maken, moeten we ook opgeven welke apparaten moeten worden opgenomen in het voorzieningenprofiel. Zorg ervoor dat uw testapparaat is inbegrepen. Geef het inrichtingsprofiel een verstandige naam en klik voortbrengen.
Download het voorzieningenprofiel en sleep het in Xcode om het toe te voegen. Update de build-instellingen van je doel in Xcode om het nieuwe provisioningprofiel te gebruiken. Bouw en voer uw applicatie uit om ervoor te zorgen dat alles werkt zoals verwacht.
Als u problemen tegenkomt, controleer dan of de bundelidentificatie van uw toepassing overeenkomt met die van de app-ID. Houd er rekening mee dat een bundel-ID hoofdlettergevoelig is.
Als u de stappen hebt gevolgd die in deze zelfstudie worden beschreven, moet uw toepassing u het volgende bericht sturen.
Als je tikt OK, uw toepassing vraagt het besturingssysteem om een apparaattoken. Als dit lukt, is de toepassing: didRegisterForRemoteNotificationsWithDeviceToken:
methode van de UIApplicationDelegate
protocol wordt opgeroepen, waarmee u het token van het apparaat overhandigt. Omdat we een loginstructie aan deze methode hebben toegevoegd, moet het token van het apparaat ook in Xcode in de console worden vastgelegd.
Push [2182: 60b] Heeft zich geregistreerd voor externe meldingen met apparaattoken (<131cec1a 64cf8f4c 80009196 6157311d c774df92 056c74c2 e5538e52 db4848f1>)
Als u wilt testen of push-berichten die u verzendt, aankomen, moet u een back-end hebben waarop uw toepassing het apparaat-token kan verzenden. Die backend kan vervolgens verbinding maken met de servers van Apple om pushmeldingen te verzenden.
Ik zal dit aspect van pushmeldingen niet behandelen in deze zelfstudie, maar dit is het gemakkelijke deel van pushmeldingen, vooral als je een service als Parse of Urban Airship gebruikt.
Je kunt ook Houston, een Ruby-juweeltje ontwikkeld door Mattt Thompson, gebruiken, waardoor het verzenden van pushmeldingen erg gemakkelijk wordt.
Ik hoop dat deze tutorial je heeft laten zien dat pushmeldingen niet zo moeilijk zijn in te stellen als de meeste ontwikkelaars denken. Het is waar dat er een beetje gehannes nodig is met sleutels en certificaten, maar als je eenmaal de bewegende delen begrijpt, dan is het niet zo moeilijk te begrijpen en in te stellen.
De waarheid is dat het moeilijkste is om sleutels en certificaten te maken. Het verwerken van pushmeldingen in uw iOS-applicatie is zeer eenvoudig en ongecompliceerd.