End-to-End-Demonstration für iOS

improve this page | report issue

Übersicht

Bei der folgenden Demonstration geht es darum, einen End-to-End-Ablauf zu veranschaulichen:

  1. Eine im Lieferumfang des MobileFirst-Client-SDK enthaltene Beispielanwendung wird in der MobileFirst Operations Console registriert und heruntergeladen.
  2. Ein neuer oder bereitgestellter Adapter wird über die MobileFirst Operations Console implementiert.
  3. Die Anwendungslogik wird geändert, um eine Ressourcenanforderung zu ermöglichen.

Endergebnis:

  • Erfolgreiches Absetzen eines Pingsignals an MobileFirst Server
  • Erfolgreiches Abrufen von Daten mit einem Adapter

Voraussetzungen:

  • Xcode
  • Optional: MobileFirst CLI (Download)
  • Optional: Eigenständiger MobileFirst Server (Download)

1. MobileFirst Server starten

Stellen Sie sicher, dass eine Mobile-Foundation-Instanz erstellt wurde oder,
falls Sie das MobileFirst Developer Kit verwenden, navigieren Sie zum Ordner des Servers und führen Sie unter Mac und Linux den Befehl ./run.sh oder unter Windows den Befehl run.cmd aus.

2. Anwendung erstellen

Öffnen Sie in einem Browser die MobileFirst Operations Console. Laden Sie dazu die URL http://Ihr_Server-Host:Serverport/mfpconsole. Wenn Sie die Konsole lokal ausführen, verwenden Sie http://localhost:9080/mfpconsole. Geben Sie für Benutzername/Kennwort die Werte admin/admin an.

  1. Klicken Sie neben Anwendungen auf die Schaltfläche Neu.
    • Wählen Sie die iOS-Plattform aus.
    • Geben Sie für die Anwendungs-ID den Wert com.ibm.mfpstarteriosobjectivec oder com.ibm.mfpstarteriosswift ein. (Der Wert hängt vom Anwendungsgerüst ab, das Sie im nächsten Schritt herunterladen werden.)
    • Geben Sie für die Version den Wert 1.0 ein.
    • Klicken Sie auf Anwendung registrieren.

    Anwendung registrieren

  2. Klicken Sie auf die Kachel Startercode abrufen und wählen Sie die Objective-C- oder Swift-Beispielanwendung für iOS zum Download aus.

    Beispielanwendung herunterladen

3. Anwendungslogik bearbeiten

  1. Öffnen Sie das Xcode-Projekt. Klicken Sie dazu doppelt auf die Datei .xcworkspace.

  2. Wählen Sie die Datei [Projektstammverzeichnis]/ViewController.m/swift aus und fügen Sie das folgende Code-Snippet als Ersatz für die vorhandene Funktion getAccessToken() ein:

    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){
                     // Gibt "Hello world" in der Xcode-Konsole aus
                     NSLog(@"Success: %@",response.responseText);
                 }
             }];
         }
    
         _testServerButton.enabled = YES;
     }];
    }
    

    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. Adapter implementieren

Laden Sie dieses vorbereitete Adapterartefakt herunter und implementieren Sie es über die MobileFirst Operations Console, indem Sie Aktionen → Adapter implementieren auswählen.

Alternativ können Sie neben Adapter auf die Schaltfläche Neu klicken.

  1. Wählen Sie Aktionen → Beispiel herunterladen aus. Laden Sie das Java-Adapterbeispiel “Hello World” herunter.

    Wenn Maven und die MobileFirst CLI nicht installiert sind, folgen Sie den auf dem Bildschirm angezeigten Anweisungen unter Entwicklungsumgebung einrichten.

  2. Navigieren Sie in einem Befehlszeilenfenster zum Stammverzeichnis des Adapter-Maven-Projekts und führen Sie den folgenden Befehl aus:

    mfpdev adapter build
    
  3. Wenn der Build fertiggestellt ist, implementieren Sie den Adapter über die MobileFirst Operations Console, indem Sie Aktionen → Adapter implementieren auswählen. Sie finden den Adapter im Ordner [adapter]/target.

    Adapter implementieren

Beispiel-App

5. Anwendung testen

  1. Wählen Sie in Xcode die Datei mfpclient.plist aus und bearbeiten Sie die Eigenschaften protocol, host und port. Geben Sie die entsprechenden Werte für Ihren MobileFirst Server an.
    • Wenn Sie einen lokalen MobileFirst Server verwenden, lauten die Werte normalerweise http, localhost und 9080.
    • Wenn Sie einen fernen MobileFirst Server (für IBM Cloud) verwenden, lauten die Werte in der Regel https, Ihre_Serveradresse und 443.
    • Wenn Sie einen Kubernetes-Cluster in IBM Cloud Private verwenden und der Implementierungstyp NodePort ist, ist der Portwert in der Regel der NodePort, der vom Service im Kubernetes-Cluster zugänglich gemacht wird.

    Wenn Sie die MobileFirst CLI installiert haben, können Sie alternativ zum Projektstammverzeichnis navigieren und den Befehl mfpdev app register ausführen. Bei Verwendung eines fernen MobileFirst Server müssen Sie den Befehl mfpdev server add ausführen, um den Server hinzuzufügen, gefolgt beispielsweise von mfpdev app register myIBMCloudServer.

  2. Klicken Sie auf die Schaltfläche Play.


Ergebnisse

  • Wenn Sie auf die Schaltfläche Ping MobileFirst Server klicken, wird Connected to MobileFirst Server angezeigt.
  • Wenn die Anwendung eine Verbindung zu MobileFirst Server herstellen konnte, findet ein Ressourcenanforderungsaufruf unter Verwendung des implementierten Java-Adapters statt.

Die Antwort des Adapters wird in der Xcode-Konsole ausgegeben.

Anwendung, die erfolgreich eine Ressource von MobileFirst Server aufgerufen hat

Nächste Schritte

Informieren Sie sich über die Verwendung von Adaptern in Anwendungen und über die Integration von zusätzlichen Services wie Push-Benachrichtigungen mithilfe des MobileFirst-Sicherheitsframeworks. Weitere Möglichkeiten sind:

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