Demostración iOS de principio a fin

improve this page | report issue

Información general

El propósito de esta demostración es presentar un flujo de principio a fin:

  1. Desde MobileFirst Operations Console se registrará y descargará una aplicación de ejemplo que está empaquetada de forma previa con el SDK de cliente de MobileFirst
  2. Se desplegará un adaptador nuevo o uno que se proporcione en MobileFirst Operations Console.
  3. Se cambiará la lógica de la aplicación para realizar una solicitud de recurso.

Resultado final:

  • Ping satisfactorio a MobileFirst Server.
  • Recuperación satisfactoria de datos utilizando un adaptador.

Requisitos previos:

  • Xcode
  • Opcional. MobileFirst CLI (descargar)
  • Opcional. MobileFirst Server autónomo (descargar)

1. Cómo iniciar MobileFirst Server

Asegúrese de haber creado una instancia de Mobile Foundation, o bien
Si está utilizando MobileFirst Developer Kit, vaya hasta la carpeta del servidor y ejecute el mandato ./run.sh en Mac y Linux o run.cmd en Windows.

2. Creación de una aplicación

En una ventana de navegador, abra MobileFirst Operations Console cargando el URL: http://su-host-servidor:su-puerto-servidor/mfpconsole. Si lo está ejecutando de forma local, utilice http://localhost:9080/mfpconsole. El nombre de usuario y la contraseña son admin/admin.

  1. Pulse el botón Nuevo junto a Aplicaciones
    • Seleccione la plataforma iOS
    • Especifique com.ibm.mfpstarteriosobjectivec o com.ibm.mfpstarteriosswift como identificador de aplicación (dependiendo del armazón de la aplicación lo descargará en el siguiente paso)
    • Especifique 1.0 como valore de versión
    • Pulse Registrar aplicación

    Registrar una aplicación

  2. Pulse en la ventana Obtener código de inicio para seleccionar y descargar la aplicación iOS de ejemplo.

    Descargar aplicación de ejemplo

3. Edición de la lógica de la aplicación

  1. Abra el proyecto Xcode efectuando una doble pulsación sobre el archivo .xcworkspace.

  2. Seleccione el archivo [project-root]/ViewController.m/swift y pegue el siguiente fragmento de código, sustituyendo la función getAccessToken() existente:

    En Objective-C:

    - (IBAction)getAccessToken:(id)sender {
    _testServerButton.enabled = NO;
    NSURL *serverURL = [[WLClient sharedInstance] serverUrl];
    _connectionStatusLabel.text = [NSString stringWithFormat:@"Connecting to server...\n%@", serverURL];
    
    NSLog(@"Testing Server Connection");
    [[WLAuthorizationManager sharedInstance] obtainAccessTokenForScope:@"" withCompletionHandler:^(AccessToken *token, NSError *error) {
         if (error != nil) {
             _titleLabel.text = @"Bummer...";
             _connectionStatusLabel.text = [NSString stringWithFormat:@"Failed to connect to MobileFirst Server\n%@", serverURL];
             NSLog(@"Did not receive an access token from server: %@", error.description);
         } else {
             _titleLabel.text = @"Yay!";
             _connectionStatusLabel.text = [NSString stringWithFormat:@"Connected to MobileFirst Server\n%@", serverURL];
             NSLog(@"Received the following access token value: %@", token.value);
    
             NSURL* url = [NSURL URLWithString:@"/adapters/javaAdapter/resource/greet/"];
             WLResourceRequest* request = [WLResourceRequest requestWithURL:url method:WLHttpMethodGet];
    
             [request setQueryParameterValue:@"world" forName:@"name"];
             [request sendWithCompletionHandler:^(WLResponse *response, NSError *error) {
                 if (error != nil){
                     NSLog(@"Failure: %@",error.description);
                 }
                 else if (response != nil){
                     // Will print "Hello world" in the Xcode Console.
                     NSLog(@"Success: %@",response.responseText);
                 }
             }];
         }
    
         _testServerButton.enabled = YES;
     }];
    }
    

    En Swift:

    @IBAction func getAccessToken(sender: AnyObject) {
         self.testServerButton.isEnabled = false
         let serverURL = WLClientSwift.sharedInstance().serverUrl();
         connectionStatusLabel.text = "Connecting to server...\n\(String(describing: serverURL))"
         print("Testing Server Connection")
         WLAuthorizationManagerSwift.sharedInstance().obtainAccessToken(forScope: nil) { (token,error) -> Void in
             if (error != nil) {
                 self.titleLabel.text = "Bummer..."
                 self.connectionStatusLabel.text = "Failed to connect to MobileFirst Server\n\(String(describing: serverURL))"
                 print("Did not receive an access token from server: " + error.debugDescription)
             } else {
                 self.titleLabel.text = "Yay!"
                 self.connectionStatusLabel.text = "Connected to MobileFirst Server\n\(String(describing: serverURL))"
                 print("Received the following access token value: " + (token?.value)!);
                 let url = URL(string: "/adapters/javaAdapter/resource/greet/");
                 let request = WLResourceRequestSwift(url: url!, method: WLResourceRequestSwift.WLHttpMethodGet);
                 request.setQueryParameterValue(parameterValue: "world", forName: "name");
                 request.send(onCompletion: { (response, error) in
                     if (error != nil){
                         print("Failure: " , error!);
                     }
                     else if (response != nil){
                         print("Success: " + response!.responseText);
                     }
                 })
             }
             self.testServerButton.isEnabled = true
         }
     }
    

4. Despliegue un adaptador

Descargue this prepared .adapter artifact y despliéguelo desde MobileFirst Operations Console con la acción Acciones → Desplegar adaptador.

Como alternativa, pulse el botón Nuevo junto a Adaptadores.

  1. Seleccione la opción Acciones → Descargar ejemplo. Descargue el ejemplo de adaptador Java de ejemplo “Hello World”.

    Si Maven y MobileFirst CLI no están instalados, siga las instrucciones de Definir su entorno de desarrollo en la pantalla.

  2. Desde una ventana de línea de mandatos, vaya a la carpeta raíz del proyecto Maven del adaptador y ejecute el mandato:

    mfpdev adapter build
    
  3. Cuando finalice la construcción, despliéguelo desde MobileFirst Operations Console con la acción Acciones → Desplegar adaptador. El adaptador se puede encontrar en la carpeta [adapter]/target.

    Desplegar un adaptador

Aplicación de ejemplo

5. Prueba de la aplicación

  1. En Xcode, seleccione el archivo mfpclient.plist y edite las propiedades protocol, host y port con los valores correctos para su instancia de MobileFirst Server.
    • Si está utilizando una instancia de MobileFirst Server local, los valores habitualmente son http, localhost y 9080.
    • Si está utilizando una instancia remota de MobileFirst Server (en IBM Cloud), los valores habitualmente son https, dirección-su-servidor y 443.
    • Si está utilizando un clúster Kubernetes en IBM Cloud Private y si el despliegue es de tipo NodePort, el valor del puerto será en general NodePort expuesto por el servicio en el clúster Kubernetes.

    Como alternativa, si ha instalado MobileFirst CLI, navegue hasta la carpeta raíz del proyecto y ejecute el mandato mfpdev app register. Si se utiliza una instancia remota de MobileFirst Server, ejecute el mandato mfpdev server add para añadir el servidor, seguido por ejemplo por mfpdev app register myIBMCloudServer.

  2. Pulse el botón Reproducir.


Resultados

  • Pulsando el botón Ping MobileFirst Server visualizará Conectado a MobileFirst Server.
  • Si la aplicación se pudo conectar a MobileFirst Server, tendrá lugar una llamada de solicitud de recurso con el adaptador Java desplegado.

La respuesta del adaptador se visualiza entonces en la consola de Xcode.

Imagen de una aplicación que ha llamado de forma satisfactoria a un recurso desde MobileFirst Server

Siguientes pasos

Aprenda más sobre cómo utilizar adaptadores en aplicaciones, y cómo integrar servicios adicionales como, por ejemplo, notificaciones push, utilizando la infraestructura de seguridad de MobileFirst entre otras cosas:

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on February 27, 2020