Tutorial: configuración inicial para recibir notificaciones push de Azure Notification Hubs
En este tutorial se muestra cómo usar Azure Notification Hubs para enviar notificaciones push a una aplicación iOS mediante el SDK de Azure Notification Hubs para Apple.
En este tutorial se describen los pasos siguientes:
- Cree una aplicación iOS de ejemplo.
- Conecte la aplicación iOS a Azure Notification Hubs.
- Pruebe el envío de las notificaciones push.
- Compruebe que la aplicación recibe notificaciones.
Puede descargar el código completo para este tutorial en GitHub.
Requisitos previos
Para completar este tutorial, debe cumplir los siguientes requisitos previos:
- Mac con Xcode, junto con un certificado de desarrollador válido instalado en el Llavero.
- Un iPhone o iPad con iOS versión 10 o posterior.
- El dispositivo físico registrado en el portal de Apple y asociado con el certificado.
Antes de continuar, asegúrese de seguir el tutorial anterior sobre cómo empezar a usar Azure Notification Hubs para aplicaciones iOS, para instalar y configurar las credenciales push en el centro de notificaciones. Aunque no tenga ninguna experiencia previa con el desarrollo de iOS, debería poder seguir estos pasos.
Nota
Debido a los requisitos de configuración de las notificaciones push, debe implementar y probar estas en un dispositivo iOS físico (iPhone o iPad), en lugar de hacerlo en el emulador de iOS.
Conexión de la aplicación iOS a Notification Hubs
En Xcode, cree un nuevo proyecto de Xcode y seleccione la pestaña iOS y la plantilla Aplicación.
Al configurar las opciones para su nuevo proyecto, asegúrese de usar el nombre de producto y el identificador de organización que usó al establecer el identificador de conjunto en el portal de desarrollo de Apple. La agrupación identificada en la nueva ventana del proyecto debería rellenarse para que coincida con el conjunto identificado en el portal para desarrolladores de Apple. Esta propiedad distingue mayúsculas de minúsculas.
En Project Navigator, seleccione el nombre del proyecto en Destinos y, a continuación, seleccione la pestaña Firma y funcionalidades. Asegúrese de seleccionar el equipo adecuado para su cuenta de desarrollador de Apple. XCode debe desplegar automáticamente el perfil de aprovisionamiento que creó anteriormente según en el identificador del conjunto.
Si no ve el nuevo perfil de aprovisionamiento que creó en Xcode, intente actualizar los perfiles de la identidad de firma. Haga clic en Xcode en la barra de menús, en Preferences (Preferencias), en la pestaña Account (Cuenta), en el botón View Details (Ver detalles), en la identidad de firma y, por último, en el botón Refresh (Actualizar) en la esquina inferior derecha.
En la pestaña Signing & Capabilities (Firma y funcionalidades), seleccione + Capability (Funcionalidad). Haga doble clic en Push Notifications (Notificaciones push) para habilitarla.
Agregue los módulos de SDK de Azure Notification Hubs.
Puede integrar el SDK de Azure Notification Hubs en la aplicación mediante Cocoapods o mediante la adición manual de los archivos binarios al proyecto.
Integración a través de Cocoapods: agregue las siguientes dependencias al podfile para incluir el SDK de Azure Notification Hubs en la aplicación:
pod 'AzureNotificationHubs-iOS'
Ejecute pod install para instalar el pod recién definido y abra el archivo .xcworkspace.
Si ve un error como Unable to find a specification for AzureNotificationHubs-iOS (No se puede encontrar una especificación para AzureNotificationHubs-iOS) mientras se ejecuta pod install, ejecute
pod repo update
para obtener los pods más recientes del repositorio de Cocoapods y, a continuación, ejecute pod install.
Integración a través de Carthage: agregue las siguientes dependencias al archivo Cartfile para incluir el SDK de Azure Notification Hubs en la aplicación:
github "Azure/azure-notificationhubs-ios"
- A continuación, actualice las dependencias de compilación:
$ carthage update
Para obtener más información sobre el uso de Carthage, consulte el repositorio de GitHub de Carthage.
Integración mediante la copia de los archivos binarios en el proyecto:
Puede realizar la integración mediante la copia de los archivos binarios en el proyecto, como se indica a continuación:
Descargue el marco SDK de Azure Notification Hubs proporcionado como archivo ZIP y descomprímalo.
En XCode, haga clic con el botón derecho en el proyecto y haga clic en la opción Add Files to (Agregar archivos a) para agregar la carpeta WindowsAzureMessaging.framework al proyecto de XCode. Seleccione Options (Opciones) y asegúrese de que Copy items if needed (Copiar elementos si es necesario) esté seleccionado. A continuación, haga clic en Add (Agregar).
Agregue o edite un archivo llamado DevSettings.plist que contiene dos propiedades,
CONNECTION_STRING
para la cadena de conexión a la instancia de Azure Notification Hubs yHUB_NAME
para el nombre de dicha instancia.Agregue la información para conectarse a Azure Notification Hubs en la sección
<string></string>
correspondiente. Reemplace los marcadores de posición de literal de cadena--HUB-NAME--
y--CONNECTION-STRING--
por el nombre del centro de conectividad y por DefaultListenSharedAccessSignature respectivamente, tal como se obtuvo anteriormente en el 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>
En el mismo archivo AppDelegate.m, reemplace todo el código después de
didFinishLaunchingWithOptions
por el código siguiente:#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
Este código se conecta al centro de notificaciones usando la información de conexión que especificó en DevSettings.plist. Luego, proporciona el token del dispositivo al centro de notificaciones para que este pueda enviar notificaciones.
Crear el archivo de encabezado NotificationDetailViewController
Al igual que en las instrucciones anteriores, agregue otro archivo de encabezado denominado NotificationDetailViewController.h. Reemplace el contenido del nuevo archivo de encabezado por el código siguiente:
#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface SetupViewController : UIViewController @end NS_ASSUME_NONNULL_END
Agregue el archivo de implementación SetupViewController.m. Reemplace el contenido del archivo por el código siguiente, que implementa los métodos UIViewController:
#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
Para asegurarse de que no haya errores, compile y ejecute la aplicación en el dispositivo.
Prueba de envío de las notificaciones push
Puede probar de recibir notificaciones en la aplicación con la opción Envío de prueba en Azure Portal. Envía una notificación push de prueba al dispositivo.
Las notificaciones push se envían normalmente en un servicio back-end como Mobile Apps o ASP.NET mediante una biblioteca compatible. Si no hay disponible ninguna biblioteca para su back-end, también puede usar la API REST directamente para enviar mensajes de notificación.
A continuación, presentamos una lista de algunos otros tutoriales que podría interesarle revisar para enviar notificaciones:
- Azure Mobile Apps: Para ver un ejemplo de cómo enviar notificaciones desde un back-end de Mobile Apps con Notification Hubs, consulte Incorporación de notificaciones push a la aplicación iOS.
- ASP.NET: Uso de Notification Hubs para enviar notificaciones push a los usuarios.
- SDK de Java para Azure Notification Hubs: consulte Uso de Notification Hubs desde Java para enviar notificaciones desde Java. Esto se probó en Eclipse para el desarrollo de Android.
- PHP: Uso de Notification Hubs desde PHP.
Compruebe que la aplicación recibe notificaciones push
Para probar las notificaciones push en iOS, debe implementar la aplicación en un dispositivo iOS físico. No puede enviar notificaciones push de Apple con el simulador de iOS.
Ejecute la aplicación y compruebe que el registro se realiza correctamente, luego presione OK(Aceptar).
Después, envíe una notificación push de prueba desde Azure Portal, como se ha descrito en la sección anterior.
La notificación push se envía a todos los dispositivos registrados para recibir las notificaciones del centro de notificaciones indicado.
Pasos siguientes
En este sencillo ejemplo, se difunden notificaciones push a todos los dispositivos iOS registrados. Para aprender a enviar notificaciones push a dispositivos iOS específicos, pase al siguiente tutorial:
Tutorial: Envío de notificaciones push a dispositivos específicos
Para más información, consulte los siguientes artículos.
- Introducción a Azure Notification Hubs
- API de REST de Notification Hubs
- SDK de Notification Hubs para operaciones de back-end
- SDK de Notification Hubs en GitHub
- Registro en el back-end de aplicación
- Administración de registros
- Trabajo con etiquetas
- Trabajo con plantillas personalizadas
- Control de acceso de Service Bus con Firmas de acceso compartido
- Generar tokens de SAS mediante programación
- Seguridad de Apple: cifrado común
- Tiempo UNIX
- HMAC