Skip to main content

Veritran Docs

Integración para iOS

En el proceso de integración para iOS, necesitas:

  1. Establecer las credenciales necesarias para acceder a los repositorios privados de XpressPlug para iOS.

  2. Integrar XpressPlug como una dependencia en tu proyecto Xcode.

  3. Crear un puente de comunicación entre React Native y el código nativo de iOS.

Establecer las credenciales del repositorio

Sigue estos pasos para configurar tus credenciales para el repositorio privado de XpressPlug para iOS.

  1. Crea el archivo .netrc en el directorio raíz (/home/:user/).

  2. Agrega la siguiente configuración, que permitirá que los administradores de dependencias como Cocoapods accedan a los recursos privados de Veritran.

    machine developer.veritran.com
    login user
    password <PRIVATE_TOKEN> 

    Importante

    Para obtener el token privado, envía un correo electrónico a mobile_support@veritran.com con el asunto “Acceso a XpressPlug”, y el equipo te proporcionará los recursos necesarios.

Integra XpressPlug a tu proyecto

Para configurar el "podfile" y las dependencias, sigue estos pasos:

  1. Agrega los siguientes repositorios al comienzo del podfile del proyecto iOS, dentro de la carpeta iOS en tu proyecto React.

    platform :ios, '13.4'
    source 'https://developer.veritran.com/resources/xpressplug/ios/specs.git'
    source 'https://github.com/CocoaPods/Specs'  
  2. Agrega las siguientes líneas en su podfile, que permitirán la compatibilidad de la biblioteca con Xcode y React-Native:

    plugin 'cocoapods-user-defined-build-types'   
    enable_user_defined_build_types!
  3. En la sección "Pod", agrega la siguiente dependencia de XpressPlug dentro del target principal de tu proyecto:

    pod 'XpressPlug', '7.10.2.51785-react', :build_type => :dynamic_framework 
  4. Agrega lo siguiente en la sección Post Script:

    post_install do |installer| 
    
       react_native_post_install(installer) 
    
       installer.pods_project.targets.each do |target| 
    
         target.build_configurations.each do |config| 
    
          if ["lottie-ios","Alamofire", "CryptoSwift", "SwiftyJSON"].include?(target.display_name) 
    
             config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES' 
    
          end 
    
          if ["Alamofire"].include?(target.display_name) 
    
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' 
    
          end 
    
          if ["Alamofire", "lottie-ios", "SwiftyJSON", "vt_contract_resources_manager", "CryptoSwift"].include?(target.display_name)
    
             next 
    
           end 
    
           config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' 
    
         end 
    
       end 
    
      end 
  5. Ejecuta el siguiente comando en la terminal:

    pod install --repo-update 

    Después de instalar las dependencias, verás el mensaje de confirmación "Pod installation complete".

  6. Verifica que el proyecto se esté compilando y ejecutando en el dispositivo. Ve a Xcode, haz clic en Product > Build para instalar y abrir la aplicación en el dispositivo.

Crear un puente de comunicación entre React Native y Objective-C Native

Es necesario crear una clase que funcione como puente de comunicación entre React Native y el código nativo de Android. Debido a esto, debes implementar el protocolo React RCTBridgeModule.

VTXpressPlugModule.h

#import <React/RCTBridgeModule.h> 
@interface VTXpressPlugModule : NSObject <RCTBridgeModule> 
- (void) initialize: (RCTPromiseResolveBlock) resolve 
           rejecter: (RCTPromiseRejectBlock) reject; 
- (void) callEntryPoint: (NSString*) entryPointName 
             parameters: (NSDictionary*) parameters 
             outputKeys: (NSArray*) outputKeys 
               resolver: (RCTPromiseResolveBlock) resolve 
               rejecter: (RCTPromiseRejectBlock) reject; 
@end  

VTXpressPlugModule.m

 @implementation VTXpressPlugModule { 
  XpressPlugInitializer *initializer; 
  XpressPlugEntryPoint *entryPoint; 
} 

RCT_EXPORT_MODULE(XpressPlugModule); 

RCT_EXPORT_METHOD(initialize: (RCTPromiseResolveBlock) resolve 
                  rejecter: (RCTPromiseRejectBlock) reject) { 
NSLog(@"---- VTXpressPlugModule did receive call initialize"); 
initializer = [[XpressPlugInitializer alloc] initWithResolve: resolve 
                                                        reject: reject]; 
[initializer execute]; 
} 

RCT_EXPORT_METHOD(callEntryPoint: (NSString*) entryPointName 
                  parameters: (NSDictionary*) parameters 
                  outputKeys: (NSArray*) outputKeys 
                  resolver: (RCTPromiseResolveBlock) resolve 
                  rejecter: (RCTPromiseRejectBlock) reject) { 
  NSLog(@"---- VTXpressPlugModule did receive call entry point"); 
  entryPoint = [[XpressPlugEntryPoint alloc] initWithEntryPointName: entryPointName 
                                                         parameters: parameters 
                                                         outputKeys: outputKeys 
                                                            resolve: resolve 
                                                             reject: reject]; 
[entryPoint execute]; 
} 

@end