Сквозная демонстрация для iOS

improve this page | report issue

Обзор

В этой демонстрации рассматриваются все этапы потока:

  1. Пример приложения, поставляемый вместе с SDK клиента MobileFirst, регистрируется и загружается с помощью MobileFirst Operations Console.
  2. В MobileFirst Operations Console развертывается новый или предоставленный адаптер.
  3. В логику приложения вносятся изменения для запроса ресурса.

Конечный результат:

  • Проверка связи с MobileFirst Server.
  • Успешное извлечение данных с помощью адаптера.

Предварительные требования:

  • Xcode
  • Необязательно. MobileFirst CLI (загрузить)
  • Необязательно. Автономный экземпляр MobileFirst Server (загрузить)

1. Запуск MobileFirst Server

Убедитесь, что создан экземпляр Mobile Foundation либо
В случае применения MobileFirst Developer Kit перейдите в папку сервера и выполните следующую команду: ./run.sh (Mac и Linux) или run.cmd (Windows).

2. Создание приложения

В браузере откройте MobileFirst Operations Console с помощью следующего URL: http://your-server-host:server-port/mfpconsole. В локальном режиме введите следующий адрес: http://localhost:9080/mfpconsole. Идентификационные данные пользователя: admin/admin.

  1. Нажмите кнопку Создать рядом с разделом Приложения
    • Выберите платформу iOS
    • Введите com.ibm.mfpstarteriosobjectivec или com.ibm.mfpstarteriosswift в качестве идентификатора приложения (в зависимости от заготовки приложения, которая будет загружена на следующем шаге)
    • Введите 1.0 в качестве версии
    • Нажмите кнопку Зарегистрировать приложение

    Зарегистрировать приложение

  2. Щелкните на плитке Получить начальный код и выберите загрузку примера приложения iOS Objective-C или iOS Swift.

    Загрузка примера приложения

3. Изменение логики приложения

  1. Откройте проект Xcode, дважды щелкнув на файле .xcworkspace.

  2. Выберите файл [каталог-проекта]/ViewController.m/swift и вставьте следующий фрагмент кода, заменив существующую функцию getAccessToken():

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

    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 и разверните его с помощью MobileFirst Operations Console. Для этого выберите Действия → Развернуть адаптер.

Кроме того, можно нажать кнопку Создать рядом с разделом Адаптеры.

  1. Выберите Действия → Загрузить пример. Загрузите пример адаптера Java “Hello World”.

    Если Maven и MobileFirst CLI не установлены, выполните инструкции по настройке среды разработки.

  2. В окне Командная строка перейдите в корневую папку проекта Maven адаптера и выполните следующую команду:

    mfpdev adapter build
    
  3. После завершения компоновки разверните адаптер с помощью MobileFirst Operations Console. Для этого выберите Действия → Развернуть адаптер. Адаптер расположен в папке [adapter]/target.

    Развертывание адаптера

пример приложения

5. Тестирование приложения

  1. В Xcode выберите файл mfpclient.plist и укажите значения свойств protocol, host и port с учетом параметров сервера MobileFirst Server.
    • Обычные значения в случае применения локального экземпляра MobileFirst Server: http, localhost и 9080.
    • Обычные значения в случае применения удаленного экземпляра MobileFirst Server (в IBM Cloud): https, your-server-address и 443.
    • В случае применения кластера Kubernetes в IBM Cloud Private и развертывания с типом NodePort значением порта, как правило, будет значение NodePort, предоставляемое службой в кластере Kubernetes.

    Кроме того, если установлен MobileFirst CLI, перейдите в корневую папку проекта и выполните команду mfpdev app register. В случае применения удаленного экземпляра MobileFirst Server выполните команду mfpdev server add для добавления сервера, а затем выполните команду, аналогичную следующей: mfpdev app register myIBMCloudServer.

  2. Нажмите кнопку Воспроизвести.


Результаты

  • При нажатии кнопки Проверить связь с MobileFirst Server выдается сообщение Установлено соединение с MobileFirst Server.
  • Если приложению удалось подключиться к MobileFirst Server, ресурс запрашивается с помощью развернутого адаптера Java.

Ответ адаптера отображается в консоли Xcode.

Приложение после успешного вызова ресурса из MobileFirst Server

Дальнейшие действия

Узнайте больше об использовании адаптеров в приложениях, интеграции дополнительных служб, таких как Push-уведомления, с помощью среды защиты 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 February 28, 2020