iOS 端到端演示

improve this page | report issue

概述

本演示的目的是展示端到端流程:

  1. 在 MobileFirst Operations Console 中注册并下载与 MobileFirst 客户机 SDK 预捆绑的样本应用程序。
  2. 将新的或提供的适配器部署到 MobileFirst Operations Console。
  3. 应用程序逻辑更改为发出资源请求。

最终结果

  • 成功 ping MobileFirst Server。
  • 成功地使用适配器检索数据。

先决条件:

  • Xcode
  • 可选。MobileFirst CLI(下载
  • 可选。单机MobileFirst Server(下载

1. 启动 MobileFirst Server

确保您已创建 Mobile Foundation 实例,或者
如果使用 MobileFirst Developer Kit,请导航至服务器的文件夹并运行命令 ./run.sh(在 Mac 和 Linux 中)或 run.cmd(在 Windows 中)。

2. 创建应用程序

在浏览器窗口中,通过加载以下 URL 打开 MobileFirst Operations Console:http://your-server-host:server-port/mfpconsole。如果是本地运行,请使用:http://localhost:9080/mfpconsole。用户名/密码为 admin/admin

  1. 单击应用程序旁的新建按钮
    • 选择 iOS 平台
    • com.ibm.mfpstarteriosobjectiveccom.ibm.mfpstarteriosswift 输入为应用程序标识(取决于您在下一步中下载的应用程序框架)
    • 1.0 输入为版本
    • 单击注册应用程序

    注册应用程序

  2. 单击获取起动器代码磁贴,并选择下载 iOS Objective-C 或 iOS Swift 样本应用程序。

    下载样本应用程序

3. 编辑应用程序逻辑

  1. 通过双击 .xcworkspace 文件打开 Xcode 项目。

  2. 选择 [project-root]/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.enabled = false
            
         let serverURL = WLClient.sharedInstance().serverUrl()
            
         connectionStatusLabel.text = "Connecting to server...\n\(serverURL)"
         print("Testing Server Connection")
         WLAuthorizationManager.sharedInstance().obtainAccessTokenForScope(nil) { (token, error) -> Void in
                
             if (error != nil) {
                 self.titleLabel.text = "Bummer..."
                 self.connectionStatusLabel.text = "Failed to connect to MobileFirst Server\n\(serverURL)"
                 print("Did not recieve an access token from server: " + error.description)
             } else {
                 self.titleLabel.text = "Yay!"
                 self.connectionStatusLabel.text = "Connected to MobileFirst Server\n\(serverURL)"
                 print("Recieved the following access token value: " + token.value)
                    
                 let url = NSURL(string: "/adapters/javaAdapter/resource/greet/")
                 let request = WLResourceRequest(URL: url, method: WLHttpMethodGet)
                    
                 request.setQueryParameterValue("world", forName: "name")
                 request.sendWithCompletionHandler { (response, error) -> Void in
                     if (error != nil){
                         NSLog("Failure: " + error.description)
                     }
                     else if (response != nil){
                         NSLog("Success: " + response.responseText)
                     }
                 }
             }
                
             self.testServerButton.enabled = true
         }
    }
    

4. 部署适配器

下载这一准备好的适配器工件,并通过操作 → 部署适配器操作从 MobileFirst Operations Console 进行部署。

或者,单击适配器旁边的新建按钮。

  1. 选择操作 → 下载样本选项。下载“Hello World”Java 适配器样本。

    如果未安装 Maven 和 MobileFirst CLI,请遵循屏幕上的设置开发环境指示信息。

  2. 命令行窗口中,导航至适配器的 Maven 项目根文件夹并运行以下命令:

    mfpdev adapter build
    
  3. 构建完成时,通过操作 → 部署适配器操作从 MobileFirst Operations Console 进行部署。适配器可在 [adapter]/target 文件夹中找到。

    部署适配器

样本应用程序

5. 测试应用程序

  1. 在 Xcode 中,选择 mfpclient.plist 文件并将 protocolhostport 属性编辑为针对 MobileFirst Server 的正确的值。
    • 如果使用本地 MobileFirst Server,这些值通常是 httplocalhost9080
    • 如果使用远程 MobileFirst Server(在 Bluemix 中),这些值通常是 httpsyour-server-address443

    或者,如果已安装 MobileFirst CLI,那么导航至项目根文件夹并运行命令 mfpdev app register。如果使用远程 MobileFirst Server,那么运行命令 mfpdev server add 来添加服务器,后跟(例如)mfpdev app register myBluemixServer

  2. 播放按钮。


结果

  • 单击 Ping MobileFirst Server 按钮将显示已连接到 MobileFirst Server
  • 如果应用程序能够连接到 MobileFirst Server,那么将使用部署的 Java 适配器进行资源请求调用。

然后,适配器响应将列显在 Xcode 控制台中。

成功从 MobileFirst Server 调用了资源的应用程序的图像

后续步骤

要了解有关在应用程序中使用适配器,如何集成附加服务(如推送通知),使用 MobileFirst 安全框架及其他内容的更多信息,请:

Last modified on October 05, 2017