Share via


Zelfstudie: Eerste configuratie voor het ontvangen van pushmeldingen van Azure Notification Hubs

In deze zelfstudie leert u hoe u Azure Notification Hubs gebruikt om pushmeldingen naar een iOS-toepassing te verzenden met behulp van de Azure Notification Hubs SDK voor Apple.

Deze zelfstudie bestaat uit de volgende stappen:

  • Maak een voorbeeld iOS-app.
  • Verbind de iOS-app met Azure Notification Hubs.
  • Verzend testpushmeldingen.
  • Controleer of uw app meldingen ontvangt.

U kunt de volledige code voor deze zelfstudie downloaden van GitHub.

Vereisten

Voor het voltooien van deze zelfstudie moet aan de volgende vereisten worden voldaan:

  • Een Mac waarop Xcode wordt uitgevoerd, evenals een geldig ontwikkelaarscertificaat dat is geïnstalleerd in uw Sleutelhanger.
  • Een iPhone of iPad waarop iOS versie 10 of hoger wordt uitgevoerd.
  • Uw fysieke apparaat dat is geregistreerd in de Apple-portal en is gekoppeld aan uw certificaat.

Zorg ervoor dat u voordat u verder gaat, de vorige zelfstudie over hoe u aan de slag gaat met Azure Notification Hubs voor iOS-apps hebt doorlopen, zodat u weet hoe u pushreferenties instelt en configureert in uw meldingenhub. Zelfs als u geen ervaring hebt met iOS-ontwikkeling, zou u deze stappen moeten kunnen volgen.

Notitie

Vanwege configuratievereisten voor pushmeldingen moet u pushmeldingen op een fysiek iOS-apparaat (iPhone of iPad) implementeren en testen in plaats van in de iOS-emulator.

Uw iOS-app verbinden met Notification Hubs

  1. Maak in Xcode een nieuw Xcode-project en selecteer de sjabloon voor het tabblad iOS en de app.

    Diagram that shows Xcode setup for new app

  2. Bij het instellen van de opties voor het nieuwe project moet u dezelfde productnaam en organisatie-id gebruiken als bij het instellen van de bundel-id in de Apple Developer-portal. De bundel die is geïdentificeerd in het nieuwe projectvenster, moet worden ingevuld zodat deze overeenkomt met de bundel die is geïdentificeerd in de Apple Developer-portal. De invoer is hoofdlettergevoelig.

  3. Selecteer onder Project Navigator de naam van uw project onder Doelen en selecteer vervolgens het tabblad Ondertekening en mogelijkheden . Zorg ervoor dat u het juiste team voor uw Apple Developer-account selecteert. XCode moet automatisch het profiel voor inrichting openen dat u eerder op basis van uw bundel-id hebt gemaakt.

    Als u het nieuwe profiel voor inrichting dat u hebt gemaakt in Xcode niet ziet, vernieuwt u de profielen voor uw identiteit voor ondertekening. Klik op Xcode in de menubalk, klik op Preferences (Voorkeuren), klik op het tabblad Account en klik op de knop View Details (Details weergeven), klik op uw identiteit voor ondertekening en klik vervolgens op de knop voor vernieuwen in de rechterbenedenhoek.

    View details

  4. Selecteer op het tabblad Ondertekenen en mogelijkheden de optie + Mogelijkheid. Dubbelklik op Pushmeldingen om deze optie in te schakelen.

    Capability

  5. Voeg de Azure Notification Hubs SDK-modules toe.

    U kunt de Azure Notification Hubs-SDK integreren in uw app met behulp van Cocoapods of door de binaire bestanden handmatig toe te voegen aan uw project.

    • Integratie via Cocoapods: voeg de volgende afhankelijkheden toe aan uw podfile om Azure Notification Hubs SDK op te nemen in uw app:

      pod 'AzureNotificationHubs-iOS'
      
      • Voer pod install uit om uw zojuist gedefinieerde pod te installeren en uw .xcworkspace te openen.

        Als er tijdens het uitvoeren van de pod-installatie een fout optreedt, zoals Kan geen specificatie vinden voor AzureNotificationHubs-iOS-, moet u pod repo update uitvoeren om de nieuwste pods uit de Cocoapods-opslagplaats op te halen. Voer daarna de pod-installatie uit.

    • Integratie via Cartfile: Voeg de volgende afhankelijkheden toe aan uw Cartfile om de Azure Notification Hubs SDK op te nemen in uw app:

      github "Azure/azure-notificationhubs-ios"
      
      • Werk vervolgens de build-afhankelijkheden bij:
      $ carthage update
      

      Raadpleeg de Carthage-opslagplaats in GitHub voor meer informatie over het gebruik van Carthage.

    • Integratie door de binaire bestanden naar uw project te kopiëren:

      U kunt de integratie uitvoeren door de binaire bestanden in uw project te kopiëren. Dit doet u als volgt:

      • Download het Azure Notification Hubs SDK-framework als een zip-bestand wordt aangeboden en pak het bestand uit.

      • Klik met de rechtermuisknop op uw project in Xcode en klik op de optie Add Files to (Bestanden toevoegen aan) om de map WindowsAzureMessaging.framework aan uw Xcode-project toe te voegen. Selecteer Options (Opties), zorg ervoor dat Copy items if needed (Copy items if needed) is geselecteerd en klik op Add (Toevoegen).

        Add framework

  6. Voeg een bestand met de naam Dev Instellingen.plist toe of bewerk dit bestand met twee eigenschappen, CONNECTION_STRING voor de verbindingsreeks naar de Azure Notification Hub en HUB_NAME voor de naam van de Azure Notification Hub.

  7. Voeg de informatie toe voor het maken van verbinding met Azure Notification Hubs in de juiste <string></string> sectie. Vervang de tijdelijke aanduidingen voor letterlijke tekenreeks --HUB-NAME-- en --CONNECTION-STRING-- en vervang respectievelijk de naam van de hub en de DefaultListenSharedAccessSignature, die u eerder hebt verkregen via de portal:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>HUB_NAME</key>
      <string>--HUB-NAME--</string>
      <key>CONNECTION_STRING</key>
      <string>--CONNECTION-STRING--</string>
    </dict>
    </plist>
    
  8. Vervang in hetzelfde AppDelegate.m-bestand de code na didFinishLaunchingWithOptions door de volgende code:

    #import <WindowsAzureMessaging/WindowsAzureMessaging.h>
    #import <UserNotifications/UserNotifications.h>
    
    // Extend the AppDelegate to listen for messages using MSNotificationHubDelegate and User Notification Center
    @interface AppDelegate () <MSNotificationHubDelegate>
    
    @end
    
    @implementation AppDelegate
    
    @synthesize notificationPresentationCompletionHandler;
    @synthesize notificationResponseCompletionHandler;
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        NSString *path = [[NSBundle mainBundle] pathForResource:@"DevSettings" ofType:@"plist"];
        NSDictionary *configValues = [NSDictionary dictionaryWithContentsOfFile:path];
    
        NSString *connectionString = [configValues objectForKey:@"CONNECTION_STRING"];
        NSString *hubName = [configValues objectForKey:@"HUB_NAME"];
    
        if([connectionString length] != 0 && [hubName length] != 0) {
            [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
            [MSNotificationHub setDelegate:self];
            [MSNotificationHub initWithConnectionString:connectionString withHubName:hubName];
    
            return YES;
        }
    
        NSLog(@"Please setup CONNECTION_STRING and HUB_NAME in DevSettings.plist and restart application");
    
        exit(-1);
    }
    
    - (void)notificationHub:(MSNotificationHub *)notificationHub didReceivePushNotification:(MSNotificationHubMessage *)message {
        // Send message using NSNotificationCenter with the message
        NSDictionary *userInfo = [NSDictionary dictionaryWithObject:message forKey:@"message"];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageReceived" object:nil userInfo:userInfo];
    }
    
    @end
    

    Deze code maakt verbinding met de Notification Hub met behulp van de verbindingsgegevens die u hebt opgegeven in Dev Instellingen.plist. Er wordt vervolgens een apparaattoken aan de Notification Hub toegekend, zodat de hub meldingen kan verzenden.

NotificationDetailViewController-headerbestand maken

  1. Voeg net als in de vorige instructies een ander headerbestand toe met de naam SetupViewController.h. Vervang de inhoud van het nieuwe headerbestand door de volgende code:

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface SetupViewController : UIViewController
    
    @end
    
    NS_ASSUME_NONNULL_END
    
  2. Voeg het implementatiebestand SetupViewController.m toe. Vervang de inhoud van het bestand door de volgende code, waarmee de UIViewController-methoden worden geïmplementeerd:

    #import "SetupViewController.h"
    
     static NSString *const kNHMessageReceived = @"MessageReceived";
    
     @interface SetupViewController ()
    
     @end
    
     @implementation SetupViewController
    
     - (void)viewDidLoad {
         [super viewDidLoad];
    
         // Listen for messages using NSNotificationCenter
         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceivePushNotification:) name:kNHMessageReceived object:nil];
     }
    
     - (void)dealloc {
         // Clean up subscription to NSNotificationCenter
         [[NSNotificationCenter defaultCenter] removeObserver:self name:kNHMessageReceived object:nil];
     }
    
     - (void)didReceivePushNotification:(NSNotification *)notification {
         MSNotificationHubMessage *message = [notification.userInfo objectForKey:@"message"];
    
         // Create UI Alert controller with message title and body
         UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message.title
                              message:message.body
                       preferredStyle:UIAlertControllerStyleAlert];
         [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]];
         [self presentViewController:alertController animated:YES completion:nil];
    
         // Dismiss after 2 seconds
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
             [alertController dismissViewControllerAnimated:YES completion: nil];
         });
    
     }
    
     @end
    
  3. Ontwikkel en voer de app op uw apparaat uit om te controleren of er geen fouten zijn.

Testpushmeldingen verzenden

U kunt ontvangst van meldingen in uw app testen met de optie Test verzenden in Azure Portal. Er wordt dan een pushmelding als test naar uw apparaat verzonden.

Test send

Pushmeldingen worden gewoonlijk in een back-endservice zoals Mobile Apps of ASP.NET verzonden met een compatibele bibliotheek. U kunt de REST API ook rechtstreeks gebruiken om meldingsberichten te verzenden als er geen bibliotheek beschikbaar is voor uw back-end.

Hier volgt een lijst met andere zelfstudies die u mogelijk kunt bekijken voor het verzenden van meldingen:

Controleren of uw app pushmeldingen ontvangt

Als u pushmeldingen op iOS wilt testen, moet u de app implementeren op een fysiek iOS-apparaat. U kunt geen Apple pushmeldingen verzenden via de iOS-simulator.

  1. Voer de app uit en controleer of de registratie is gelukt en druk vervolgens op OK.

    Register

  2. Verzend vervolgens als test een pushmelding vanuit Azure Portal, zoals in de vorige sectie wordt beschreven.

  3. De pushmelding wordt verzonden naar alle apparaten die zijn geregistreerd voor het ontvangen van meldingen van de specifieke meldingenhub.

    Send test

Volgende stappen

In dit eenvoudige voorbeeld zendt u pushmeldingen uit naar al uw geregistreerde iOS-apparaten. Als u wilt weten hoe u pushmeldingen kunt verzenden naar specifieke iOS-apparaten, gaat u verder met de volgende zelfstudie:

Zelfstudie: Pushmeldingen verzenden naar specifieke apparaten

Raadpleeg voor meer informatie de volgende artikelen: