使用 MobileData 云服务构建一个 iOS 应用程序

2014 年 2 月 24 日
PDF (1317 KB)
 
author photo - kevan holdaway

Kevan Holdaway

Software Engineer, IBM Mobile Cloud Services

Find me on LinkedIn

author photo - belinda johnson

Belinda Johnson

Software Engineer, IBM Mobile Cloud Services

@BeeMarieJohnson

author photo - nick gibson

Nick Gibson

Software Engineer, IBM Mobile Cloud Services

 

Codename:BlueMix 是一款 beta 级 产品,随着我们不断让其功能更加完善和更易于使用,它也将不断改进。我们会竭尽全力保持本文最新,但并不总是完全跟得上现状。感谢大家的理解!

您可能已经了解 Codename:BlueMix 的一些好处,它是 IBM 用于开发和部署移动应用程序和 Web 应用程序的开放式平台。CodeName:BlueMix 中的许多预构建服务使得开发人员可以轻松地构建和增强应用程序。在本文中,我们将展示如何使用 MobileData 服务构建一个 iOS 应用程序。

您有没有遇到过这样的场景:等您走到杂货店后才发现自己忘记了妻子那个美味的蛋奶酥配方所需的确切配料?或者忘记孩子们所要求的第二天的午餐盒甜品?如果他们可以将自己的要求输入到一个共享的购物清单中,而且您可以收到有关更新的推送通知,情况又会怎样呢?

进入 BlueList 应用程序。这是一个简单的 iOS 应用程序,我们会向其添加 MobileData 服务,以便在云中存储、删除、更新和查询所存储的对象。后续文章会向您展示如何添加 Push 和 CloudCode 服务,这样您就可以在列表被更新时收到通知(Push 服务),并在其中一台设备以某种方式更新列表时,让所有设备上的列表都获得刷新(CloudCode 服务)。

这个简单的应用程序使用了 BlueMix 服务,让您可以立刻开始编写自己(更复杂)的应用程序。

v0 是 BlueList 应用程序的基础版本。我们会向您展示如何添加 MobileData 服务,让您的代码看起来类似 v1 代码。您可以从 v0 开始,逐个完成这些步骤,或跳过这些步骤,直接下载 v1。v1 版本的 BlueList 应用程序包括 MobileData 服务。

创建该应用程序的先决条件

 
  • 基本熟悉 iOS 开发。Apple Developer 文章 “立刻开始开发 iOS 应用” 介绍了如何安装 Xcode,还编写了一个基本的应用程序。
  • 来自 JazzHub 的 v0 代码(单击上面的按钮)。在您的模拟器中运行此代码。重新启动应用程序,请注意,列表项不是永久性的。本文中的步骤将向您展示如何将 MobileData 服务添加到您的应用程序中,从而使列表项持续存在。
  • 获得一个 Codename:BlueMix ID(加入 beta!),这样您就可以获得 MobileData 服务。

步骤 1. 在 BlueMix 上创建一个 Mobile App Services Boilerplate

 
  1. 登录到 BlueMix
  2. 单击 Add an application 转到相应的目录。 添加一个应用程序按钮的屏幕截图
  3. 单击 Boilerplates 下面的 Mobile Backend StarterMobile App Services bundle 的屏幕截图

    点击查看大图

  4. 单击 Create Application创建应用程序按钮的屏幕截图

    点击查看大图

  5. 填写应用程序面板,然后单击 Create应用创建面板的屏幕截图

    点击查看大图

步骤 2. 安装和配置 SDK

 
  1. 单击 Get the IBM SDK for iOSIBM SDK for iOS 按钮的屏幕截图

    点击查看大图

    备注:在步骤 6 中将会需要此页上的应用程序 ID。

  2. 在 Finder 中,找到 IBMCore Framework (<unzipped_location>/IBMCore.framework)。将这个框架拖到 Frameworks 文件夹下的 BlueList Xcode 项目中。 框架文件进入项目的屏幕截图
  3. 选中 "Copy items into destination group's folder (if needed)"。
  4. 在 Finder 中,找到 Data SDK Framework (<unzipped_location>/IBMData.framework)。将这个框架拖到 Frameworks 文件夹下的 BlueList Xcode 项目中,该操作与对 IBMCore Framework 执行的操作相同。
  5. 在 Finder 中,找到 configuration.json 文件 (<unzipped_location>/configuration.json)。将它拖到 Supporting Files 组的 Xcode 项目中。
  6. 修改 configuration.json,让它包含应用程序 ID。(要获得应用程序 ID,请登录到 Codename:BlueMix 访问 SDK 页面,转到您的 Dashboard,单击所需的应用程序,然后单击 SDKs。)
                            {
                            	applicationID:"<INSERT_APPLICATION_ID_HERE>"
                            }
  7. 备注:在使用 Xcode 创建一个新的 iOS 应用程序时,必须将 -ObjC 链接器标志添加到构建设置中。为此,需要选中应用程序的目标,然后单击 Build Settings。您可以从这里搜索 "Other Linker Flags"。如果没有看到结果,请确保您已经选择了 “All” 设置,而不是 “Basic”。 我们已经将标志添加到样例项目。 项目的 Xcode 构建设置的屏幕截图。

    点击查看大图

步骤 3. 更改代码,以便利用 Data 服务

 
  1. 打开 IBM_Item.h。查看当前的代码。
    #import <Foundation/Foundation.h>
    
    @interface IBM_Item :NSObject
    
    @property(nonatomic, copy) NSString *name;
    
    @end
  2. 将超类修改为 IBMDataObject,使得 IBM_Item 符合 IBMDataObjectSpecialization 协议。为了符合 IBMDataObjectSpecialization 协议,需要通知编译器您将在 IBM_Item 类中实现 IBMDataObjectSpecialization 方法。
    #import <Foundation/Foundation.h>
    #import <IBMData/IBMData.h>
    
    @interface IBM_Item :IBMDataObject <IBMDataObjectSpecialization>
    
    @property(nonatomic, copy) NSString *name;
    
    @end
  3. 实现 dataClassName 方法,并将 title 属性标记为动态属性。并在类方法初始化中注册规范。这将创建 IBM_Item Objective-C 类和 JSON 类 "Item" 之间的映射,该映射会在云中永久存在。
    #import "IBM_Item.h"
    
    @implementation IBM_Item
    
    @dynamic name;
    
    +(void) initialize
    {
       [self registerSpecialization];
    }
    
    +(NSString*) dataClassName
    {
       return @"Item";
     }
    
    @end

步骤 4. 将 MBaaS SDK 挂钩到应用程序代理

 
  1. 发出一个初始化 MBaaS 服务 SDK 的请求。该操作将会加载您的应用程序 ID,并用它来初始化 MBaaS 服务。

    点击查看代码清单

    #import <IBMCore/IBMCore.h>
    #import "IBM_AppDelegate.h"
    
    @implementation IBM_AppDelegate
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
         // Setup MBaaS Connection by loading plugins (data sdk plugin)
         [IBMBaaS initializeSDK];
                                
         return YES;
    }
    
    @end

步骤 5. 修改 IBM_ListViewController 类,从 MBaaS Data 服务加载并保持数据。

 
  1. 修改 loadItemscreateItemupdateItemdeleteItem 方法 (IBM_ListViewController.m),持久保存对 MBaaS Data 服务的数据项变更。

    点击查看代码清单

                            - (void)listItems:(void(^)(void)) cb
                            {
                                IBMQuery *qry = [IBM_Item query];
                                [qry findObjectsInBackgroundWithBlock:^(NSError *error, NSArray *objects){
                                    if (!error) {
                                        self.itemList = [NSMutableArray arrayWithArray: objects];
                                        [self reloadLocalTableData];
                                        if(cb){
                                            cb();
                                        }
                                    }else{
                                        // Error handing code here
                                        NSLog(@"listItems failed with error:%@", error);
                                    }
                                }];
                            }
    
                            - (void) createItem:(IBM_Item*) item
                            {
                                [self.itemList addObject: item];
                                [self reloadLocalTableData];
                                [item saveInBackgroundWithCallback:^(NSError *error, IBM_Item *addedItem) {
                                    if(error){
                                        // Error handing code here
                                        NSLog(@"createItem failed with error:%@", error);
                                    }
                                }];
                            }
    
                            - (void) updateItem:(IBM_Item*) item
                            {
                                self.editedCell.textLabel.text = item.name;
                                [item saveInBackgroundWithCallback:^(NSError *error, IBM_Item *updatedItem) {
                                    if(error){
                                        // Error handing code here
                                        NSLog(@"updateItem failed with error:%@", error);
                                    }
                                }];
    
                            }
    
                            -(void) deleteItem:(IBM_Item*) item
                            {
                                [self.itemList removeObject: item];
                                [self reloadLocalTableData];
                                [item deleteInBackgroundWithCallback:^(NSError *error, id obj) {
                                    if(!error){
                                        [self listItems: nil];
                                    }else{
                                        // Error handing code here
                                        NSLog(@"deleteItem failed with error:%@", error);
                                    }
                                }];
                                
                                // Exit edit mode to avoid need to click Done button
                                [self.tableView setEditing:NO animated:YES];
                            }

步骤 6. 运行应用程序

 
  1. 现在,您已经完成了所有代码修改,您的代码应该等同于版本 1,而且列表项应该是持久性的!
  2. 在 iOS 模拟器中或在您的 iOS 设备上运行该代码。 BlueList 应用程序的第一个页面的屏幕截图
  3. 将几个数据项添加到列表中。

    将数据项添加到列表中的屏幕截图
  4. 现在选择一个数据项,单击它进行编辑。

    编辑列表项的屏幕截图
  5. 保存所编辑的列表项。现在,列表视图中的该列表项应该已被修改。
  6. 重新启动该应用程序。
  7. 请注意,您的数据项仍然存在。现在,您的数据对于云已经是持久性的!

步骤 7. 查看云中的数据

 
  1. 登录到 BlueMix 。
  2. 在 Dashboard 视图中单击您的应用程序。
  3. 单击 SERVICES
  4. 单击 MobileData service。此 Data Viewer 页面显示了已存储在云中的 Data Classes,以及被持续保存的每个 Data Class 的实例。 数据浏览器的屏幕截图

    点击查看大图

结束语

 

使用 Codename:BlueMix 中提供的 MobileData 服务来开发这个应用程序,这会让您感觉到利用移动云服务来使用和集成移动数据功能是多么容易!


相关主题:MobileData 服务(Android 应用程序)

添加评论

注意:评论中不支持 HTML 语法


剩余 1000 字符

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=移动开发, Cloud computing
ArticleID=971924
ArticleTitle=使用 MobileData 云服务构建一个 iOS 应用程序
publish-date=02242014