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:
- Eine im Lieferumfang des MobileFirst-Client-SDK enthaltene Beispielanwendung wird in der MobileFirst Operations Console registriert und heruntergeladen.
- Ein neuer oder bereitgestellter Adapter wird über die MobileFirst Operations Console implementiert.
- 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:
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.
- 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.
-
Klicken Sie auf die Kachel Startercode abrufen und wählen Sie die Objective-C- oder Swift-Beispielanwendung für iOS zum Download aus.
3. Anwendungslogik bearbeiten
-
Öffnen Sie das Xcode-Projekt. Klicken Sie dazu doppelt auf die Datei .xcworkspace.
-
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.
-
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.
-
Navigieren Sie in einem Befehlszeilenfenster zum Stammverzeichnis des Adapter-Maven-Projekts und führen Sie den folgenden Befehl aus:
mfpdev adapter build
-
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.
5. Anwendung testen
- 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 Befehlmfpdev server add
ausführen, um den Server hinzuzufügen, gefolgt beispielsweise vonmfpdev app register myIBMCloudServer
. - 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.
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:
- Gehen Sie die Lernprogramme zur Anwendungsentwicklung durch.
- Gehen Sie die Lernprogramme zur Adapterentwicklung durch.
- Gehen Sie die Lernprogramme zu Authentifizierung und Sicherheit durch.
- Gehen Sie die Lernprogramme zu Benachrichtigungen durch.
- Sehen Sie sich alle Lernprogramme an.
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.