iOS - Démonstration de bout en bout

improve this page | report issue

Présentation

Cette démonstration présente un processus complet :

  1. Une application exemple fournie avec le kit SDK client MobileFirst est enregistrée et téléchargée à partir de la console MobileFirst Operations Console.
  2. Un nouvel adaptateur ou un adaptateur fourni est déployé sur la console MobileFirst Operations Console.
  3. La logique d’application est changée afin d’effectuer une demande de ressource.

Résultat final :

  • Interrogation par commande ping du serveur MobileFirst Server réussie.
  • Extraction réussie des données à l’aide d’un adaptateur.

Prérequis :

1. Démarrage du serveur MobileFirst Server

Assurez-vous d’avoir créé une instance Mobile Foundation, ou
Si vous utilisez le kit MobileFirst Developer Kit, accédez au dossier du serveur puis exécutez la commande ./run.sh sous Mac et Linux ou run.cmd sous Windows.

2. Création d’une application

Dans une fenêtre de navigateur, ouvrez la console MobileFirst Operations Console en entrant l’URL http://your-server-host:server-port/mfpconsole. Dans le cas d’une exécution locale, entrez l’URL http://localhost:9080/mfpconsole. Le nom d’utilisateur et le mot de passe sont admin/admin.

  1. Cliquez sur le bouton Nouveau en regard de l’option Applications
    • Sélectionnez la plateforme iOS
    • Entrez com.ibm.mfpstarteriosobjectivec ou com.ibm.mfpstarteriosswift en tant qu’identificateur d’application (en fonction de la structure d’applications téléchargée à l’étape suivante)
    • Entrez 1.0 dans la zone Version
    • Cliquez sur Enregistrer l’application

    Enregistrement d'une application

  2. Cliquez sur le titre Obtenir le code de démarrage puis indiquez que vous souhaitez télécharger l’application exemple iOS Objective-C ou iOS Swift.

    Téléchargement d'une application exemple

3. Edition d’une logique d’application

  1. Ouvrez le projet Xcode en cliquant deux fois sur le fichier .xcworkspace.

  2. Sélectionnez le fichier [racine-projet]/ViewController.m/swift et collez le fragment de code suivant, en remplaçant la fonction getAccessToken() existante :

    Dans 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;
     }];
    }
    

    Dans 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. Déploiement d’un adaptateur

Téléchargez cet artefact .adapter préparé et déployez-le à partir de la console MobileFirst Operations Console en sélectionnant Actions → Déployer un adaptateur.

Vous pouvez également cliquer sur le bouton Nouveau en regard de la zone Adaptateurs.

  1. Sélectionnez l’option Actions → Télécharger des exemples. Téléchargez l’adaptateur Java exemple “Hello World”.

    Si Maven et MobileFirst CLI ne sont pas installés, suivez les instructions de configuration de votre environnement de développement s’affichant à l’écran.

  2. A partir d’une fenêtre de ligne de commande**, accédez au dossier racine du projet Maven de l’adaptateur et exécutez la commande :

    mfpdev adapter build
    
  3. Une fois la génération terminée, déployez-la à partir de la console MobileFirst Operations Console en utilisant l’option Actions → Déployer un adaptateur. L’adaptateur est disponible dans le dossier [adaptateur]/target.

    Déploiement d'un adaptateur

application exemple

5. Test de l’application

  1. Dans Xcode, sélectionnez le fichier mfpclient.plist puis modifiez les propriétés protocol, host et port en indiquant les valeurs correctes de votre serveur MobileFirst Server.
    • Si vous utilisez un serveur MobileFirst Server local, les valeurs sont généralement http, localhost et 9080.
    • Si vous utilisez un serveur MobileFirst Server distant (sur IBM Cloud), les valeurs sont généralement https, your-server-address et 443.
    • Si vous utilisez un cluster Kubernetes sur IBM Cloud Private et si le déploiement est de type NodePort, la valeur du port est généralement celle de NodePort exposée par le service dans le cluster Kubernetes.

    Par ailleurs, si vous avez installé l’interface MobileFirst CLI, accédez au dossier racine du projet puis exécutez la commande mfpdev app register. Si un serveur MobileFirst Server distant est utilisé, exécutez la commande mfpdev server add pour ajouter le serveur, suivi par exemple de la commande mfpdev app register myIBMCloudServer.

  2. Appuyez sur le bouton Play.


Résultats

  • Si vous cliquez sur Ping MobileFirst Server, la mention Connected to MobileFirst Server s’affiche.
  • Si l’application a pu se connecter au serveur MobileFirst Server, un appel de demande de ressource utilisant l’adaptateur Java déployé aura lieu.

La réponse de l’adaptateur s’affiche alors dans la console Xcode.

Image de l'application ayant appelé avec succès une ressource de MobileFirst Server

Etapes suivantes

Pour en savoir plus notamment sur l’utilisation d’adaptateurs dans des applications et sur le mode d’intégration de services supplémentaires (notifications Push, par exemple) à l’aide de l’infrastructure de sécurité MobileFirst :

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 March 02, 2020