logo indigitall
/Integración indigitall /Push app /iOS
EN

 | ES

Integración iOS

Guía rápida de integración del SDK de iOS.


Tabla de contenidos



¿Qué necesitas para la instalación?


Integración


Este artículo muestra el desarrollo mínimo que hay que hacer para comenzar a registrar dispositivos y poder realizar las primeras campañas push.


Añadiendo las dependencias del SDK


El SDK está disponible a través de CocoaPods.

CocoaPods es un gestor de dependencias válido para Swift y Objective-C, siendo el más popular en el desarrollo de iOS.




Si aun no lo tienes, instala CocoaPods. Abre tu terminal y ejecuta los siguientes comandos:


$ cd /ROOT/OF/YOUR/PROJECT
$ gem install cocoapods
$ pod init


Modifica el fichero PodFile de tu proyecto y añade este código:


target '<YourTarget>' do
  pod 'indigitall-ios'
end
target '<YourTargetNotificationExtension>' do
  pod 'indigitall-ios'  
end

Recuerda: añade los pod correspondientes del SDK dentro de los nombres de los target que tenga tu aplicación.


Actualiza el repositorio de CocoaPod e instala las dependencias desde el terminal:


$ pod repo update
$ pod install

Atención: a partir de aquí debes usar .workspace en vez de .xcproject para trabajar en el proyecto.
La principal diferencia es que .xcproject es para un único proyecto y .workspace puede contener varios proyectos.


Activa las capabilities:


iOS capabilities

Implementación en AppDelegate


Puedes verlo en nuestro vídeo tutorial o leer las instrucciones más abajo:




Mofifica el fichero AppDelegate para importar el SDK y sobreescribir los siguientes métodos:


import Indigitall

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        Indigitall.set(deviceToken)
}

func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any]) {
        Indigitall.handle(notification: data)
}

func application(_ application: UIApplication, handleActionWithIdentifier identifier: String?, forRemoteNotification userInfo: [AnyHashable : Any], completionHandler: @escaping () -> Void) {
        Indigitall.handle(notification: userInfo, identifier: identifier)
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        Indigitall.handle(notification: userInfo)
        completionHandler(.newData)
}

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        Indigitall.performFetchWithCompletionHandler(completionHandler: completionHandler)
}
#import <Indigitall/Indigitall-Swift.h>

- (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    [IndigitallObjc setWithDeviceToken:deviceToken];
}

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo{
    [IndigitallObjc handleWithNotification:userInfo identifier:nil];
}

- (void) application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(nonnull NSDictionary *)userInfo completionHandler:(nonnull void (^)())completionHandler{
    [IndigitallObjc handleWithNotification:userInfo identifier:identifier];
}

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{
    [IndigitallObjc handleWithNotification:userInfo identifier:nil];
}

- (void) application:(UIApplication *)application performFetchWithCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{
    [IndigitallObjc performFetchWithCompletionHandlerWithCompletionHandler:completionHandler];
}


 Notification Service Extension


Desde la salida de iOS 10, las apps pueden gestionar notificaciones push enriquecidas, es decir, con imágen, gif, vídeo, botones, etc.

Para poder hacer uso de estas funcionalidades, tu app necesita implementar el Notification Service Extension.


  1. Añade un nuevo Notification Service Extension a tu proyecto (Xcode: Archivo > Nuevo > Target).
  2. Añade el extension target en tu aplicación.
  3. Crea un nuevo fichero llamado NotificationService dentro de este target. Sobrescribe todo el contenido con el siguiente código:


import Indigitall
class NotificationService: INNotificationServiceExtension {}
#import <UserNotifications/UserNotifications.h>
#import <Indigitall/INNotificationServiceExtension.h>

API_AVAILABLE(ios(10.0))
@interface NotificationService : INNotificationServiceExtension
@end


Inicializar el SDK


Añade el siguiente código al AppDelegate y recuerda cambiar YOUR-APP-KEY por el App Key que puedes encontrar en la consola de indigitall


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        Indigitall.initialize(appKey: "<YOUR-APP-KEY>")
        return true
}
#import <Indigitall/Indigitall-Swift.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [IndigitallObjc initializeWithAppKey:@"<YOUR-APP-KEY>" success:nil failed:nil];
    return YES;
}


Validar la integración


Para comprobar que la integración se ha realizado correctamente realiza lo siguiente:


  1. Desde xCode, ves al log y busca la llamada PUT /device conteniendo los parámetros appKey, deviceId y pushToken y que devuelva HTTP 200.




  1. Envia una notificación desde la consola de indigitall. Es posible que en la consola el contador de dispositivos aparezca a 0. No te preocupes, puede tardar unos minutos en actualizarse, pero no hace falta que esperes, la push debería llegar igualmente.




Siguientes pasos