Dela via


Självstudie: Skapa push-meddelanden i din iOS-app

Den här självstudien hjälper dig att skapa push-meddelanden i din iOS-app med hjälp av Azure Communication Services Chat SDK.

Push-meddelanden varnar användare om inkommande meddelanden i en chatttråd när mobilappen inte körs i förgrunden. Azure Communication Services stöder två versioner av push-meddelanden:

  • Grundläggande version: Ett märkesnummer visas på appens ikon, enheten spelar upp ett meddelandeljud och en popup-aviseringsbanderoll visas.

    Skärmbild av den grundläggande versionen av ett push-meddelande.

  • Avancerad version: Förutom de funktioner som stöds i den grundläggande versionen kan du anpassa rubriken och meddelandeförhandsgranskningen i aviseringsbanderollen.

    Skärmbild av den avancerade versionen av ett push-meddelande.

I den här kursen får du:

  • Konfigurera ett APN-certifikat (Apple Push Notification Service).
  • Konfigurera Xcode för push-meddelanden.
  • Implementera en grundläggande eller avancerad version av push-meddelanden.
  • Testa meddelandena i din app.
  • Konfigurera automatisk förnyelse av registrering för push-meddelanden.

Ladda ned kod

Få åtkomst till exempelkoden för den här självstudien på GitHub.

Förutsättningar

  • Slutför alla nödvändiga steg i Snabbstart: Lägg till chatt i din app.

  • Skapa en Azure-meddelandehubb i samma prenumeration som din Communication Services-resurs och länka sedan meddelandehubben till din Communication Services-resurs. Se Etablering av meddelandehubb.

Skapa ett .p12 APN-certifikat och ange det i meddelandehubben

Om du inte är en intern Microsoft-kund utför du alla steg i följande procedur.

Om du är en intern Microsoft-kund skickar du ett ärende och anger paket-ID för din app för att hämta ett .p12-certifikat. Hoppa sedan till det sista steget i följande procedur.

  1. Logga in på Apple Developer Portal.

  2. Gå till Certifikat, Identifierare och profiler>Identifierare>App-ID:n och välj sedan det app-ID som är associerat med din app.

    Skärmbild som visar val för att välja ett app-ID.

  3. På sidan för ditt app-ID väljer du Funktioner>Push-meddelanden och sedan Spara.

    Skärmbild som visar alternativ för att redigera en app-ID-konfiguration.

  4. I dialogrutan Ändra appfunktioner som visas väljer du Bekräfta.

    Skärmbild som visar knappen Bekräfta för att ändra appfunktioner.

  5. På sidan för ditt app-ID väljer du Funktioner Konfigurera push-meddelanden>> och gör sedan följande val:

    • Om du vill testa push-meddelanden när du utvecklar en iOS-app väljer du knappen Skapa certifikat under SSL-certifikat för utveckling.
    • Om du vill skicka push-meddelanden i produktion väljer du knappen Skapa certifikat under Produktions-SSL-certifikat.

    Skärmbild som visar alternativ för att skapa ett utvecklingscertifikat eller ett produktionscertifikat.

  6. Området Skapa ett nytt certifikat visas på sidan Certifikat, Identifierare och profiler .

    Skärmbild som visar alternativet för att ladda upp en begäran om certifikatsignering.

    I det här området laddar du upp en begäran om certifikatsignering (CSR):

    1. På en ny webbläsarflik följer du den här Apple-hjälpsidan för att skapa en CSR och spara filen som App name.cer. Instruktionerna omfattar att använda certifikatassistenten för att begära ett certifikat och fylla i certifikatinformationen.

      Skärmbild som visar val för att begära ett certifikat från en certifikatutfärdare.

      Skärmbild som visar ett exempel på hur du fyller i certifikatinformation.

    2. Dra filen .cer till området Välj fil . Välj sedan Fortsätt i det övre högra hörnet.

      Skärmbild av området för att välja en certifikatfil.

  7. Välj Hämta.

    Skärmbild av knappen för att ladda ned ett certifikat.

  8. Spara filen lokalt i .p12-format.

    Skärmbild som visar området för att spara en certifikatfil.

  9. Öppna den .cer fil som du laddade ned. I Nyckelringsåtkomst väljer du ditt certifikat, högerklickar på det och exporterar sedan certifikatet i .p12-format.

  10. Gå till meddelandehubben. Under Inställningar väljer du Apple (APNS). Fyll sedan i certifikatinformationen:

    • För Autentiseringsläge väljer du Certifikat.
    • För Ladda upp certifikat laddar du upp .p12-filen som du nyss skapade.
    • För Programläge väljer du läget baserat på dina behov.

    När du har angett all information väljer du Spara.

    Skärmbild som visar program- och certifikatinställningar för en meddelandehubb.

Konfigurera Xcode

  1. I Xcode går du till Signering och funktioner.

  2. Lägg till en funktion genom att välja + Kapacitet och välj sedan Push-meddelanden.

  3. Lägg till ytterligare en funktion genom att välja + Kapacitet och välj sedan Bakgrundslägen.

  4. Under Bakgrundslägen väljer du Fjärrmeddelanden.

    Skärmbild som visar tillägg av push-meddelanden och bakgrundslägen i Xcode.

  5. För Pod Target – AzureCore anger du Kräv endast apptilläggssäkert API som Nej.

Implementera push-meddelanden

Grundläggande version

Om du vill implementera en grundläggande version av push-meddelanden måste du registrera dig för fjärrmeddelanden med API:er. Se exempelkoden för att se den relaterade implementeringen i AppDelegate.swift.

Avancerad version

Om du vill implementera en avancerad version av push-meddelanden måste du inkludera följande objekt i din app. Anledningen är att krypteringen av kundinnehåll (till exempel chattmeddelandeinnehåll och avsändarens visningsnamn) i nyttolaster för push-meddelanden kräver vissa lösningar.

Datalagring för krypteringsnycklar

Skapa beständig datalagring på iOS-enheter. Den här datalagringen bör kunna dela data mellan huvudappen och apptilläggen.

I exempelkoden för den här självstudien väljer du Appgrupper som datalagring genom att vidta följande åtgärder:

  • Lägg till funktionen Appgrupper i appens mål (huvudappen och apptilläggen) genom att följa stegen i Apple-artikeln Lägga till funktioner i din app.

  • Konfigurera appgrupper genom att följa stegen i Apple-artikeln Konfigurera appgrupper. Kontrollera att huvudappen och apptilläggen har samma containernamn.

Meddelandetjänsttillägg

Implementera notification service-tillägget som medföljer huvudappen. Det här apptillägget används för att dekryptera nyttolasten för push-meddelanden när enheten tar emot den.

  1. Gå till Lägg till ett tjänstapptillägg i projektet i Apple-dokumentationen och följ stegen.

  2. Gå till Implementera tilläggets hanteringsmetoder i Apple-dokumentationen. Apple tillhandahåller standardkoden för att dekryptera data, och du kan följa den övergripande strukturen för den här självstudien. Men eftersom du använder Chat SDK för dekryptering måste du ersätta den del som börjar från // Try to decode the encrypted message data med anpassad logik. Se exempelkoden för att se den relaterade implementeringen i NotificationService.swift.

Implementering av PushNotificationKeyStorage-protokollet

Protokollet PushNotificationKeyStorage krävs för den avancerade versionen av push-meddelanden. Du kan använda standardklassen AppGroupPushNotificationKeyStorage som finns i Chat SDK. Om du inte använder appgrupper som nyckellagring, eller om du vill anpassa nyckellagringsmetoder, skapar du en egen klass som överensstämmer PushNotificationKeyStorage med protokollet.

PushNotificationKeyStorage definierar två metoder:

  • onPersistKey(encryptionKey:expiryTime): Den här metoden används för att bevara krypteringsnyckeln i lagringen av användarens iOS-enhet. Chat SDK anger 45 minuter som förfallotid för krypteringsnyckeln. Om du vill att push-meddelanden ska gälla i mer än 45 minuter måste du schemalägga ett chatClient.startPushNotifications(deviceToken:) samtal oftare (till exempel var 15:e minut) så att en ny krypteringsnyckel kan registreras innan den gamla nyckeln upphör att gälla.

  • onRetrieveKeys() -> [String]: Den här metoden används för att hämta giltiga nycklar som lagrades tidigare. Du har flexibiliteten att tillhandahålla anpassning baserat på den datalagring som du valde tidigare.

I protokolltillägget tillhandahåller Chat SDK en implementering av den decryptPayload(notification:) -> PushNotificationEvent metod som du kan använda. Se exempelkoden för att se den relaterade implementeringen i NotificationService.swift.

Testa dina meddelanden

  1. Skapa en chatttråd med användare A och användare B.

  2. Ladda ned GitHub-lagringsplatsen för exempelappar.

  3. Placera användare A och <ACCESS_TOKEN> <ACS_RESOURCE_ENDPOINT> värden i AppSettings.plist.

  4. Ange Aktivera Bitcode till Nej för två poddmål: AzureCommunicationChat och Trouter.

  5. Anslut iOS-enheten till din Mac och kör programmet. När du uppmanas att auktorisera push-meddelanden på enheten väljer du Tillåt.

  6. Som användare B skickar du ett chattmeddelande. Bekräfta att användare A tar emot ett push-meddelande på iOS-enheten.

Implementera förnyelse av registrering

För att Microsoft ska kunna tillhandahålla en säker chatttjänst förblir registreringen för push-meddelanden på iOS-enheter giltig i endast 45 minuter. För att upprätthålla funktionen för push-meddelanden måste du implementera registreringsförnyelse i klientappen.

I den här självstudien föreslås två lösningar som är anpassade till Apples officiella riktlinjer. Vi rekommenderar att du implementerar båda lösningarna tillsammans för att öka deras effektivitet.

Kommentar

Olika faktorer kan påverka effektiviteten i någon av lösningarna. Enhetens batteristatus, nätverksförhållanden och iOS-specifika begränsningar kan till exempel påverka appens möjlighet att köra bakgrundsaktiviteter. Mer information finns i videon Framsteg i appbakgrundskörning och artikeln Skicka bakgrundsuppdateringar till din app från Apple.

Lösning 1: Bakgrundsuppgifter

Bakgrundsaktiviteter erbjuder ett sätt att utföra aktiviteter även när appen inte är i förgrunden. När du implementerar en bakgrundsaktivitet kan din app begära mer tid för att slutföra en viss uppgift, till exempel förnya registreringen av push-meddelanden.

I följande avsnitt beskrivs hur du kan använda bakgrundsaktiviteter för registreringsförnyelse.

Konfigurera automatisk uppdatering av användaråtkomsttoken

För att säkerställa oavbruten åtkomst till chatttjänster måste du underhålla giltiga användaråtkomsttoken. Token har vanligtvis en standard giltighetsperiod på 24 timmar, varefter de upphör att gälla och kräver förnyelse. Genom att implementera en mekanism för automatisk uppdatering kan du garantera att token är giltig när chattprogrammet aktiveras.

Chat SDK effektiviserar tokenhanteringen genom att automatisera uppdateringsprocessen när en anpassad uppdatering av åtkomsttoken implementeras. Utför följande steg för att konfigurera chattprogrammet så att det stöder automatisk tokenuppdatering:

  1. För att säkerställa att chattprogrammet har kontinuerlig och säker användaråtkomst måste du implementera en tjänstnivå som är dedikerad för att utfärda token. Ett alternativ är att använda Azure Functions för detta ändamål.

    Information om hur du skapar en Azure-funktion finns i artikeln Skapa en betrodd användaråtkomsttjänst med hjälp av Azure Functions . Den beskriver hur du konfigurerar din funktionsapp och distribuerar nödvändig kod för utfärdande av token.

  2. När du har konfigurerat din Azure-funktion:

    1. Hämta url:en för token utfärdaren från Azure Portal. Chattprogrammet använder den här URL:en för att begära nya token.

    2. Skapa och integrera tokenuppdateringen i chattprogrammet. Den här komponenten begär nya token och initierar chattklienten för sömlös automatisk tokenförnyelse.

      Exempelkod för tokenuppdateringen och dess integrering med chattklienten finns på GitHub-lagringsplatsen för exempelappar.

Aktivera och schemalägga bakgrundsaktiviteter

Om du vill aktivera och schemalägga bakgrundsaktiviteter i din iOS-app följer du stegen i Apple-artikeln Använda bakgrundsuppgifter för att uppdatera din app.

Praktisk implementering finns i GitHub-lagringsplatsen för exempelappar. Det angivna exemplet använder BGProcessingTask konfigurerat för att initiera tidigast en minut in i framtiden, vilket visar hur du effektivt hämtar data i bakgrunden.

Lösning 2: Fjärrmeddelande

Ett fjärrmeddelande är mekanismen för iOS-program att köra bakgrundsaktiviteter som svar på externa utlösare. Du kan använda fjärrmeddelanden för uppgifter som att uppdatera registreringar utan användarintervention.

Så här använder du fjärrmeddelanden för att köra en bakgrundsaktivitet:

  1. Implementera en utlösande mekanism.

    Du kan till exempel använda en Azure-funktionsapp som utlösarmekanism. Det gör att du kan köra kod som svar på olika utlösare, inklusive HTTP-begäranden, så det är användbart för att initiera tysta push-meddelanden. Kom ihåg att implementera enhetsregistret på din sida så att funktionsappen vet var aviseringarna ska levereras.

  2. Konfigurera en meddelandehubb.

    Azure Notification Hubs-tjänsten tillhandahåller en skalbar infrastruktur för push-meddelanden som kan skicka meddelanden till valfri plattform (iOS, Android, Windows och så vidare) från valfri serverdel (moln eller lokalt).

    Du kan återanvända samma meddelandehubb som du använder för vanliga push-meddelanden. Om du vill konfigurera en ny kan du läsa dokumentationen för Azure Notification Hubs.

  3. Konfigurera Azure-funktionsappen för regelbundna meddelanden.

    Justera funktionsappen för att regelbundet skicka fjärrmeddelanden via meddelandehubben. Dessa meddelanden vidarebefordras till APN:er och dirigeras till den angivna enheten. Mer information finns i Notification Hubs-utdatabindning för Azure Functions.

  4. Hantera meddelanden i din app.

    I din iOS-app implementerar du programinstansmetoden för att utlösa en automatisk uppdatering av registreringen när du får ett tyst meddelande.

Mer information finns i Apple-artikeln Konfigurera en fjärrmeddelandeserver.