Diferencia entre revisiones de «SDKs:Push:iOS:index»
(No se muestran 4 ediciones intermedias del mismo usuario) | |||
Línea 25: | Línea 25: | ||
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/certificados.png | https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/certificados.png | ||
Una vez creados los dos certificados de <b>APNS</b>, tanto el de <i>Development</i>, como el de <i>Production</i>, podremos | Una vez creados los dos certificados de <b>APNS</b>, tanto el de <i>Development</i>, como el de <i>Production</i>, podremos configurarlos en nuestro panel. Supongamos que queremos usar el de producción | ||
directamente, entonces lo que tenemos que hacer es pinchar dos veces en el certificado para que se nos habrá | directamente, entonces lo que tenemos que hacer es pinchar dos veces en el certificado para que se nos habrá | ||
el keychain. | el keychain. | ||
Línea 46: | Línea 46: | ||
Existen dos maneras de instalar el <i> | Existen dos maneras de instalar el <i>framework</i> <b>Push</b>: a través de <b>CocoaPods</b> o descargándolo directamente. Recomendamos hacerlo a través de la primera opción. <b>Push</b> incorpora dos <i>frameworks</i> auxiliares, <b>RegisterLib</b> y <b>UtilsLib</b>. | ||
=== INSTALACIÓN CON COCOAPODS: === | === INSTALACIÓN CON COCOAPODS: === | ||
Línea 86: | Línea 86: | ||
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/descargar_ios_push_general.png | https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/descargar_ios_push_general.png | ||
* Desde la página de | * Desde la página de [http://panel.mobeleader.com/index.php?sec=85&id=47&tipo=2 información de la libreria]: | ||
Línea 101: | Línea 101: | ||
Una vez configurada correctamente la aplicación en nuestro panel con sus respectivos certificados, e instalado el | Una vez configurada correctamente la aplicación en nuestro panel con sus respectivos certificados, e instalado el framework, procederemos a realizar las siguientes configuraciones en nuestro proyecto. | ||
<b>1.-</b> Desde la sección <b>Captabilities</b> de nuestro "target" principal en el proyecto. Deberemos realizar las siguientes configuraciones: | <b>1.-</b> Desde la sección <b>Captabilities</b> de nuestro "target" principal en el proyecto. Deberemos realizar las siguientes configuraciones: | ||
Línea 121: | Línea 121: | ||
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/info_plist_ios.png | https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/info_plist_ios.png | ||
<b>3.-</b> El | <b>3.-</b> El framework <b>Push</b> esta dotado de la capacidad de mostrar <b>notificaciones enriquecidas</b>; es decir, es capaz de mostrar notificaciones con contenido como <i>imagenes, videos y audios</i>. Para ello deberemos añadir a nuestro <i>target principal</i> una <b>nueva extensión</b> siguiendo los pasos expuestos a continuación: | ||
https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/add_ns_1.png | https://panel.mobeleader.com/ficheros_subidos/librerias/imagenes/push/add_ns_1.png | ||
Línea 181: | Línea 181: | ||
} | } | ||
<b>4.-</b> Para finalizar y poder lanzar el | <b>4.-</b> Para finalizar y poder lanzar el framework, configuraremos los archivos <b>AppDelegate.h</b> y <b>AppDelegate.m</b> de nuestro proyecto: | ||
<b>4.1.- AppDelegate.h:</b> Añadiremos el siguiente import, de manera que podamos añadir su delegate al interface tal y como se muestra en las imagenes. | <b>4.1.- AppDelegate.h:</b> Añadiremos el siguiente import, de manera que podamos añadir su delegate al interface tal y como se muestra en las imagenes. | ||
Línea 192: | Línea 192: | ||
<b>4.2.- AppDelegate.m:</b> Comenzaremos importando el | <b>4.2.- AppDelegate.m:</b> Comenzaremos importando el framework <b>Push</b>. | ||
#Import <MobeleaderPush/MobeleaderPush.h> | #Import <MobeleaderPush/MobeleaderPush.h> | ||
Línea 209: | Línea 209: | ||
Cabe destacar que: <b>"App Hash"</b> deberá ser reemplazado por el hash de la aplicación añadida a nuestro panel | Cabe destacar que: <b>"App Hash"</b> deberá ser reemplazado por el hash de la aplicación añadida a nuestro panel, y que la función <b>activePushNotificationsInForegroundApp</b> será opcional. Haciendo uso de ella decidiremos si las notificaciones se mostrarán cuando la aplicación este en primer plano. No se mostrarán por defecto. | ||
<b>4.2.2.- AppDelegate.m:</b> Tambien añadiremos las siguientes funciones al código. Poniendo especial atención en la encargada de recibir notificaciones. | <b>4.2.2.- AppDelegate.m:</b> Tambien añadiremos las siguientes funciones al código. Poniendo especial atención en la encargada de recibir notificaciones. | ||
Línea 224: | Línea 224: | ||
Como se ha indicado previamente, esta segunda función es especial. A partir de iOs 10 tan solo recibira las notificaciones silenciosas o en background. Normalmente, dichas notificaciones son para que las aplicaciones hagan algo por detras sin que el usuario lo detecte, por lo que tendremos dos opciones: <b>1º</b>, procesaremos directamente lo que queramos en dicha función o <b>2º</b>, tal y como se muestra en la imagen, dejaremos que el FrameWork procese la notificación y la recogeremos en el delegate <b>onReceiveNotification</b>, donde la procesaremos. Esto se deja al gusto del desarrollador. | Como se ha indicado previamente, esta segunda función es especial. A partir de iOs 10 tan solo recibira las notificaciones silenciosas o en background. Normalmente, dichas notificaciones son para que las aplicaciones hagan algo por detras sin que el usuario lo detecte, por lo que tendremos dos opciones: <b>1º</b>, procesaremos directamente lo que queramos en dicha función o <b>2º</b>, tal y como se muestra en la imagen, dejaremos que el FrameWork procese la notificación y la recogeremos en el delegate <b>onReceiveNotification</b>, donde la procesaremos. Esto se deja al gusto del desarrollador. | ||
=== DELEGATES === | === DELEGATES === | ||
El | El framework <b>Push</b> esta dotado de varios delegates opcionales mediante los cuales se podrá controlar lo que esta sucediendo en cada momento. Dichos delegates son los siguientes: | ||
* <b>onGetToken:(NSString \*) token:</b> Notifica cuando la librería ha recibido el token (Para rescatar este token y poder hacer pruebas con el) y devuelve el token registrado en el argumento NSString. | * <b>onGetToken:(NSString \*) token:</b> Notifica cuando la librería ha recibido el token (Para rescatar este token y poder hacer pruebas con el) y devuelve el token registrado en el argumento NSString. |
Revisión actual - 10:12 7 jun 2019
CÓMO AGREGAR EL FRAMEWORK PUSHLIB EN iOS
INTRODUCCIÓN.
Este framework usa el sistema Push de iOs, denominado APNS. Lo primero que realiza es la recogida del Token de cada terminal por aplicación para registrarlo en nuestro sistema. Una vez registrado, se le pueden enviar las notificaciones que desee y que el framework las reciba y las muestre.
VERSIONES SOPORTADAS DE iOS.
El framework Push soporta versiones de iOs 10 en adelante, en caso de ser menor que iOs 10 no se lanzará.
PASOS A REALIZAR EN APPLE DEVELOPER CENTER.
Para poder enviar notificaciones push lo primero que deberemos hacer es crear los certificados para cada aplicación en Apple Developer Center.
Una vez hayamos accedido nos dirigiremos a la sección Identifiers --> App IDs y pincharemos sobre el simbolo del + parar agregar uno nuevo.
A continuación, debemos crear los certificados, para ello pinchamos en Create Certificate y seguimos las instrucciones que nos indican:
Una vez creados los dos certificados de APNS, tanto el de Development, como el de Production, podremos configurarlos en nuestro panel. Supongamos que queremos usar el de producción directamente, entonces lo que tenemos que hacer es pinchar dos veces en el certificado para que se nos habrá el keychain.
Seleccionamos el certificado y damos en el menú Archivo --> Exportar items y se nos dará la opción de exportarlo como .p12 Archivo de Intercambio de Información Personal. Cuando os pregunté por la contraseña pincháis a Aceptar y no insertáis ninguna contraseña. Una vez que tenemos el Archivo .p12 habrá que configurarlo en nuestro panel.
PASOS A REALIZAR EN NUESTRO PANEL
Para poder configurar las notificaciones Push en una aplicación, debemos de haberla añadido previamente a nuestro panel. Si aún no la tenemos creada, lo haremos desde la sección Mis Aplicaciones del panel, pulsando en Crear Aplicación.
Rellenamos los datos necesarios y enviamos el formulario.
Una vez creada la aplicación, iremos a la sección Mis Aplicaciones del panel y pulsaremos Añadir app a push.
Desde aquí configuraremos nuestra aplicación ( NOTA: Los certificados que hemos de exportar han de ser los mismos que hemos generado en el Apple Developer Center, coincidiendo tambien el tipo de certificado [ produccion / desarrollo ])
Una vez creada la app, solo nos queda configurar nuestro proyecto en el XCODE para poder comenzar con las notificaciones.
PASOS A REALIZAR PARA LA INSTALACIÓN DEL FRAMEWORK EN LA APLICACIÓN
Existen dos maneras de instalar el framework Push: a través de CocoaPods o descargándolo directamente. Recomendamos hacerlo a través de la primera opción. Push incorpora dos frameworks auxiliares, RegisterLib y UtilsLib.
INSTALACIÓN CON COCOAPODS:
En caso de que su proyecto no incluya el archivo Podfile, incorpórelo. Si nunca ha trabajado con CocoaPods consulte la documentación ofrecida en su web oficial, en la que se explica paso a paso cómo instalar CocoaPods y cómo crear, actualizar y trabajar con los archivos Podfile.
Añada al archivo Podfile de su proyecto las siguientes dependencias:
target 'NameTarget' do use_frameworks! pod 'MobeleaderPush' pod 'MobeleaderUtils' pod 'MobeleaderRegister' end
Cabe destacar que NameTarget deberá ser reemplazado por el nombre real del target de la aplicación en la que se quiere añadir el framework.
Una vez creado y configurado el archivo haremos uso del siguiente comando desde el terminal sobre la ruta en la que se encuentra dicho archivo.
$ pod install --repo-update
Y veremos como se crea un proyecto tal que el siguiente:
Deberemos abrir el proyecto desde dicho archivo para que pueda usar el framework correctamente.
INSTALACIÓN MANUAL DEL FRAMEWORK:
Descargue el framework Push:
- Desde la página principal de las librerías:
- Desde la página de información de la libreria:
- Directamente desde aquí.
Una vez descargado el framework, descomprímalo e instálelo en su proyecto.
LANZAMIENTO
Una vez configurada correctamente la aplicación en nuestro panel con sus respectivos certificados, e instalado el framework, procederemos a realizar las siguientes configuraciones en nuestro proyecto.
1.- Desde la sección Captabilities de nuestro "target" principal en el proyecto. Deberemos realizar las siguientes configuraciones:
1.1.- Activaremos las Notificaciones Push.
1.2- Activaremos el Background Mode, de manera que nos deje activar las notificaciones remotas tal que se muestra en la siguiente imagen.
2.- Desde la sección Info de nuestro "target" principal en el proyecto. Deberemos añadir la siguiente key con el fin de añadir soporte a conexiones que no sean https ( obligatorio a partir de iOs 9 ):
3.- El framework Push esta dotado de la capacidad de mostrar notificaciones enriquecidas; es decir, es capaz de mostrar notificaciones con contenido como imagenes, videos y audios. Para ello deberemos añadir a nuestro target principal una nueva extensión siguiendo los pasos expuestos a continuación:
Por motivos de seguridad y privacidad en ésta última imagen se han protegido los datos relacionados con el desarollador y la compañia desarrolladora. Cabe destacar, que en el apartado Embed in Application deberemos seleccionador el target de la aplicación configurada previamente en los pasos 1 y 2 de éste mismo apartado.
Al añadir la extensión se generará algo tal que lo siguiente en nuestro proyecto:
Deberemos reemplazar el código del metodo didReceiveNotificationRequest del archivo NotificationService.m, dicho código será el siguiente:
- (void)didReceiveNotificationRequest:(UNNotificationRequest )request withContentHandler:(void (^)(UNNotificationContent _Nonnull))contentHandler { self.contentHandler = contentHandler; self.bestAttemptContent = [request.content mutableCopy]; NSString *attachmentUrlString = [request.content.userInfo objectForKey:@"media-attachment"]; if (![attachmentUrlString isKindOfClass:[NSString class]]) return; NSURL *url = [NSURL URLWithString:attachmentUrlString]; if (!url) return; [[[NSURLSession sharedSession] downloadTaskWithURL:url completionHandler:^(NSURL _Nullable location, NSURLResponse _Nullable response, NSError * _Nullable error) { if (!error) { NSString *tempDict = NSTemporaryDirectory(); NSString *attachmentID = [[[NSUUID UUID] UUIDString] stringByAppendingString:[response.URL.absoluteString lastPathComponent]]; if(response.suggestedFilename) attachmentID = [[[NSUUID UUID] UUIDString] stringByAppendingString:response.suggestedFilename]; NSString *tempFilePath = [tempDict stringByAppendingPathComponent:attachmentID]; if ([[NSFileManager defaultManager] moveItemAtPath:location.path toPath:tempFilePath error:&error]) { UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:attachmentID URL:[NSURL fileURLWithPath:tempFilePath] options:nil error:&error]; if (!attachment) { NSLog(@"Create attachment error: %@", error); } else { _bestAttemptContent.attachments = [_bestAttemptContent.attachments arrayByAddingObject:attachment]; } } else { NSLog(@"Move file error: %@", error); } } else { NSLog(@"Download file error: %@", error); } [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.contentHandler(self.bestAttemptContent); }]; }] resume]; }
4.- Para finalizar y poder lanzar el framework, configuraremos los archivos AppDelegate.h y AppDelegate.m de nuestro proyecto:
4.1.- AppDelegate.h: Añadiremos el siguiente import, de manera que podamos añadir su delegate al interface tal y como se muestra en las imagenes.
#Import <UserNotifications/UserNotifications.h>
@interface AppDelegate : UIResponder <UNUserNotificationCenterDelegate>
4.2.- AppDelegate.m: Comenzaremos importando el framework Push.
#Import <MobeleaderPush/MobeleaderPush.h>
4.2.1.- AppDelegate.m: A continuación en la función didFinishLaunchingWithOptions introduciremos lo siguiente.
#[[Push shared] setAppHash:@"App Hash"]; #[[Push shared] setDelegate:self]; #[[Push shared] activePushNotificationsInForegroundApp:NO]; #[[Push shared] activePushNotifications:YES]; if([launchOptions count] > 0){ NSDictionary *remoteNoti = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; [[Push shared] didReceiveRemoteNotification:remoteNoti]; }
Cabe destacar que: "App Hash" deberá ser reemplazado por el hash de la aplicación añadida a nuestro panel, y que la función activePushNotificationsInForegroundApp será opcional. Haciendo uso de ella decidiremos si las notificaciones se mostrarán cuando la aplicación este en primer plano. No se mostrarán por defecto.
4.2.2.- AppDelegate.m: Tambien añadiremos las siguientes funciones al código. Poniendo especial atención en la encargada de recibir notificaciones.
- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )devToken{ [[Push shared] registerForRemoteNotificationsWithDeviceToken:devToken]; [[Push shared] resetBadge]; } - (void)application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo fetchCompletionHandler(void (^)(UIBackgroundFetchResult result))completionHandler{ [[Push shared] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; }
Como se ha indicado previamente, esta segunda función es especial. A partir de iOs 10 tan solo recibira las notificaciones silenciosas o en background. Normalmente, dichas notificaciones son para que las aplicaciones hagan algo por detras sin que el usuario lo detecte, por lo que tendremos dos opciones: 1º, procesaremos directamente lo que queramos en dicha función o 2º, tal y como se muestra en la imagen, dejaremos que el FrameWork procese la notificación y la recogeremos en el delegate onReceiveNotification, donde la procesaremos. Esto se deja al gusto del desarrollador.
DELEGATES
El framework Push esta dotado de varios delegates opcionales mediante los cuales se podrá controlar lo que esta sucediendo en cada momento. Dichos delegates son los siguientes:
- onGetToken:(NSString \*) token: Notifica cuando la librería ha recibido el token (Para rescatar este token y poder hacer pruebas con el) y devuelve el token registrado en el argumento NSString.
- onRegisterToken:(NSString \*) token: Notifica cuando la librería ha registrado el token y devuelve el token registrado en el argumento NSString.
- onUpdateToken:(NSString \*) token: Notifica cuando la librería ha actualizado el token y devuelve el token actualizado en el argumento NSString.
- onReceiveNotification:(NSDictionary \*) dictionary: Notifica cuando la librería ha recibido una notificación y devuelve la notificación en el argumento NSDictionary.
- onError:(NSString \*) error: Notifica cuando la librería ha tenido algún error, y devuelve la descripción del error en el argumento NSString.
-(void)onGetToken:(NSString *)token{} -(void)onRegisterToken:(NSString *)token{} -(void)onUpdateToken:(NSString *)token{} -(void)onReceiveNotification:(NSDictionary *)notification{} -(void)onError:(NSString *)error