Diferencia entre revisiones de «SDKs:Push:iOS:index»
(→PASOS A REALIZAR EN APPLE DEVELOPER CENTER.) |
|||
Línea 13: | Línea 13: | ||
== PASOS A REALIZAR EN APPLE DEVELOPER CENTER. == | == PASOS A REALIZAR EN APPLE DEVELOPER CENTER. == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== PASOS A REALIZAR PARA LA INSTALACIÓN DEL FRAMEWORK EN LA APLICACIÓN == | == PASOS A REALIZAR PARA LA INSTALACIÓN DEL FRAMEWORK EN LA APLICACIÓN == |
Revisión del 10:45 17 ene 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 de Mobeleader 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.
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](https://guides.cocoapods.org/using/using-cocoapods.html), 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](http://panel.mobeleader.com/index.php?sec=82):
- Desde la página de información de la libreria(http://panel.mobeleader.com/index.php?sec=85&id=47&tipo=2):
- Directamente desde [aquí](https://repos.mobeleader.com/MobeleaderPush/1.61.XX/MobeleaderPush.zip).
Una vez descargado el framework, descomprímalo e instálelo en su proyecto.
LANZAMIENTO
Una vez configurada correctamente la aplicación en el Panel Mobeleader 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];
} ` De manera que quedará tal que:
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 al Panel Mobeleader; 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, por defecto no se mostrarán.
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