Demonstração de ponta a ponta do iOS

improve this page | report issue

Visão Geral

O propósito desta demonstração é experimentar um fluxo de ponta a ponta:

  1. Um aplicativo de amostra que é pré-empacotado com o SDK do cliente MobileFirst é registrado e transferido por download a partir do MobileFirst Operations Console.
  2. Um adaptador novo ou fornecido é implementado no MobileFirst Operations Console.
  3. A lógica de aplicativo é alterada para fazer uma solicitação de recurso.

Resultado final:

  • Ping de MobileFirst Server executado com sucesso.
  • Recuperação de dados usando adaptador realizada com sucesso.

Pré-requisitos:

  • Xcode
  • Opcional. MobileFirst CLI (download)
  • Opcional. Independente MobileFirst Server (download)

1. Iniciando o MobileFirst Server

Certifique-se de ter criado uma instância do Mobile Foundation ou
Se estiver usando MobileFirst Developer Kit, navegue para a pasta do servidor e execute o comando: ./run.sh em Mac e Linux ou run.cmd no Windows.

2. Criando um aplicativo

Em uma janela do navegador, abra MobileFirst Operations Console carregando a URL: http://your-server-host:server-port/mfpconsole. Se estiver executando localmente, use: http://localhost:9080/mfpconsole. O nome de usuário/senha são admin/admin.

  1. Clique no botão Novo próximo de Aplicativos
    • Selecione a plataforma iOS
    • Insira com.ibm.mfpstarteriosobjectivec ou com.ibm.mfpstarteriosswift como o identificador do aplicativo (dependendo do andaime do aplicativo do qual você fará download na próxima etapa)
    • Insira 1.0 como o valor da versão
    • Clique em Registrar aplicativo

    Registre um aplicativo

  2. Clique no quadro Obter Código de Início e selecione para fazer download do aplicativo de amostra iOS Objective-C ou iOS Swift.

    Download do aplicativo de amostra

3. Editando a lógica de aplicativo

  1. Abra o projeto Xcode dando um clique duplo no arquivo .xcworkspace.

  2. Selecione o arquivo [project-root]/ViewController.m/swift e cole o fragmento de código a seguir, substituindo a função getAccessToken() existente:

    No 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){
                     // Imprimirá "Hello world" no Xcode Console.
                     NSLog(@"Success: %@",response.responseText);
                 }
             }];
         }
    
         _testServerButton.enabled = YES;
     }];
    }
    

    No 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. Implemente um adaptador

Faça o download deste artefato .adapter preparado e implemente-o a partir do MobileFirst Operations Console usando a ação Ações → Implementar Adaptador.

Como alternativa, clique no botão Novo próximo de Adaptadores.

  1. Selecione a opção Ações → Download de Amostra. Faça o download da amostra do adaptador Java “Hello World”.

    Se o Maven e o MobileFirst CLI não estiverem instalados, siga as instruções Configure seu ambiente de desenvolvimento na tela.

  2. Em uma janela de Linha de Comandos, navegue para a pasta raiz do projeto Maven do adaptador e execute o comando:

    mfpdev adapter build
    
  3. Quando a compilação for concluída, implemente-a a partir do MobileFirst Operations Console usando a ação Ações → Implementar Adaptador. O adaptador pode ser localizado na pasta [adapter]/target.

    Implemente um adaptador

aplicativo de amostra

5. Testando o aplicativo

  1. No Xcode, selecione o arquivo mfpclient.plist e edite as propriedades protocol, host e port com os valores corretos para seu MobileFirst Server.
    • Se estiver usando um MobileFirst Server local, os valores normalmente serão http, localhost e 9080.
    • Se você estiver usando um MobileFirst Server remoto (no IBM Cloud), normalmente os valores serão https, your-server-address e 443.
    • Se você estiver usando um cluster do Kubernetes no IBM Cloud Private, e se a implementação for do tipo NodePort, normalmente o valor da porta será NodePort, exposto pelo serviço no cluster do Kubernetes.

    Como alternativa, se você tiver instalado MobileFirst CLI, navegue para a pasta raiz do projeto e execute o comando mfpdev app register. Se um MobileFirst Server remoto for usado, execute o comando mfpdev server add para incluir o servidor, seguido por, por exemplo: mfpdev app register myIBMCloudServer.

  2. Pressione o botão Reproduzir.


Resultados

  • Um clique no botão Ping MobileFirst Server exibirá Conectado ao MobileFirst Server.
  • Se o aplicativo foi capaz de se conectar ao MobileFirst Server, uma chamada de solicitação de recurso usando o adaptador Java implementado acontecerá.

A resposta do adaptador é então impressa no Xcode Console.

Imagem de um aplicativo que chamou com sucesso um recurso do MobileFirst Server

Etapas Seguintes

Saiba mais sobre como usar adaptadores em aplicativos e como integrar serviços adicionais, como Notificações Push, usando a estrutura de segurança do MobileFirst e mais:

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 28, 2020