Содержание


Создание iOS-приложения с использованием службы IBM Mobile Data для Bluemix

Comments

Возможно, вы уже знаете о некоторых преимуществах Bluemix, открытой платформы IBM для разработки и развертывания мобильных и веб-приложений. Многие встроенные службы в составе Bluemix облегчают разработчикам создание и совершенствование приложений. В этом руководстве мы покажем, как построить iOS-приложение с помощью службы IBM Mobile Data для Bluemix.

Случалось ли вам когда-нибудь, придя в продуктовый магазин, забыть, как называется ингредиент, необходимый вашей супруге для приготовления Потрясающего суфле? Или десерт, который дети заказали для школьного завтрака? Вот если бы все они могли вводить свои запросы в общий список продуктов, а вы – получать push-уведомления о внесенных в него изменениях!

Именно это делает приложение BlueList. Это простое iOS-приложение, в которое мы добавим службу IBM Mobile Data для Bluemix для сохранения, удаления, редактирования и считывания объектов, хранящихся в облаке. В этом руководстве показано, как добавить службы Push и CloudCode, чтобы можно было получать уведомления при обновлении списка (Push), причем так, что когда список как-нибудь изменяют в одном из устройств, он будет обновляться во всех устройствах (CloudCode).

Это простое приложение с использованием служб Bluemix поможет вам в кратчайшие сроки приступить к написанию собственных (более сложных) приложений.

Получить код bluelist-base(v0) Получить код bluelist-mobiledata(v1)

Базовую версию приложения BlueList составляет код Bluelist-base(v0). Мы покажем, как добавить к нему службу IBM Mobile Data для Bluemix, так чтобы получить код bluelist-mobiledata(v1). Можно начать с bluelist-base(v0) и выполнить все шаги или пропустить все и загрузить готовый код bluelist-mobiledata(v1). Версия bluelist-mobiledata(v1) приложения BlueList включает в себя службу IBM Mobile Data для Bluemix.

Что необходимо для приложения

  • Начальное знакомство с разработкой для iOS. Процесс установки Xcode и написания простого приложения описан в руководстве для разработчиков Apple Start Developing iOS Apps Today.
  • Код bluelist-base(v0). Нажмите приведенную выше кнопку и импортируйте код bluelist-base-iOS в свою среду разработки. Запустите этот код в эмуляторе. Перезапустите приложение и обратите внимание, что элементы списка не сохраняются. В этом руководстве мы покажем, как добавить к приложению службу IBM Mobile Data для Bluemix, так чтобы элементы списка сохранялись.
  • Идентификатор Bluemix для доступа к службе IBM Mobile Data для Bluemix.
  • Факультативно: знакомство с CocoaPods. Среда CocoaPods управляет зависимостями библиотеки для проектов Xcode и позволит автоматически импортировать зависимости, необходимые для приложения BlueList. Файл Podfile с определением зависимостей содержится в корневой папке проекта. Ознакомьтесь с инструкциями по установке и применению CocoaPods.

Шаг 1. Создание приложения Mobile Cloud в Bluemix

  1. Войдите в Bluemix.
  2. Нажмите кнопку Add an application, чтобы перейти в каталог. Кнопка Create an Application
  3. Нажмите кнопку Mobile Cloud в окне Boilerplates. Окно Boilerplates Mobile Cloud
    Окно Boilerplates Mobile Cloud
  4. Нажмите кнопку Create Application. Окно Mobile Cloud Application с кнопкой Create Application
    Окно Mobile Cloud Application с кнопкой Create Application
  5. Заполните блок Finish Adding Mobile Cloud, указав область размещения и имя для своего приложения. Затем нажмите кнопку Create. Кнопка Create an Application
  6. После создания приложения оно отображается в информационной панели. Щелкните на своем новом приложении, чтобы перейти на его страницу Overview. Кнопка Create an Application

Шаг 2. Установка и настройка пакетов SDK

Примечание. Шаги 1-6 можно пропустить и установить файлы SDK Framework с помощью метода CocoaPods. Это подразумевает запуск файла Podfile, включенного в пример, согласно инструкциям по CocoaPod, приведенным в предварительных требованиях.

  1. Вы увидите обзор (Overview) своего нового приложения. Нажмите кнопку Download SDKs.
    Кнопка Download SDKs
    Кнопка Download SDKs

    Примечание. Этот идентификатор Application ID понадобится в последующих разделах настоящей инструкции.

  2. Вы увидите документацию по созданию мобильного приложения. Нажмите кнопку iOS SDK.Кнопка Download SDKs
    Кнопка Download SDKs
  3. В дереве Finder найдите IBMBluemix framework (<unzipped_location>/IBMBluemix.framework). Перетащите эту среду в проект BlueList Xcode в папке Frameworks. Файлы среды в проекте
  4. Установите флажок Copy items into destination group's folder (if needed) [Копировать элементы в папку группы назначения (при необходимости)].
  5. В дереве Finder найдите IBMData SDK Framework. Перетащите эту среду в проект BlueList Xcode в папке Frameworks, как и среду IBMBluemix.
  6. Измените файл bluelist.plist так, чтобы он содержал значения applicationId, applicationSecret и applicationRoute, указанные на странице Overview приложения. (Чтобы попасть на страницу Overview, перейдите на страницу Download SDKs – для этого войдите в Bluemix, откройте Dashboard и щелкните на нужном приложении.) Приложение в каталоге
    Приложение в каталоге
  7. Примечание. При создании нового iOS-приложения с помощью XCode необходимо добавить в параметры сборки флаги компоновщика -ObjC и -lsqlite3. Для этого выберите целевое приложение и щелкните на Build Settings. Оттуда можно искать другие флаги компоновщика (Other Linker Flags). Если вы не видите этого, убедитесь, что выбраны «Все» (All), а не «Основные» (Basic) настройки. Мы уже добавили флаги в пример проекта. Скриншот проекта Xcode build settings.
    Скриншот проекта Xcode build settings.

Шаг 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 как динамическое. А также зарегистрируйте специализацию initialize в методе class. Это установит соответствие между классом 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. Привязка Bluemix iOS SDK и службы IBM Mobile Data для Bluemix к делегату приложения

  1. Сначала считайте идентификатор приложения из файла plist, отредактированного ранее.
    #import <IBMBluemix/IBMBluemix.h>
    #import <IBMData/IBMData.h>
    #import "IBM_AppDelegate.h"
    
    @implementation IBM_AppDelegate
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    
        NSString *applicationId = nil;
        NSString *applicationSecret = nil;
        NSString *applicationRoute = nil;
    
        BOOL hasValidConfiguration = YES;
        NSString *errorMessage = @"";
    
        // Считывание applicationId из bluelist.plist.
        NSString *configurationPath = [[NSBundle mainBundle] pathForResource:@"bluelist" ofType:@"plist"];
        if(configurationPath){
            NSDictionary *configuration = [[NSDictionary alloc] initWithContentsOfFile:configurationPath];
            applicationId = [configuration objectForKey:@"applicationId"];
            if(!applicationId || [applicationId isEqualToString:@""]){
                hasValidConfiguration = NO;
                errorMessage = @"Open the bluelist.plist and set the applicationId to the Bluemix applicationId";
            }
            applicationSecret = [configuration objectForKey:@"applicationSecret"];
            if(!applicationSecret || [applicationSecret isEqualToString:@""]){
                hasValidConfiguration = NO;
                errorMessage = @"Open the bluelist.plist and set the applicationSecret with your Bluemix application's secret";
            }
            applicationRoute = [configuration objectForKey:@"applicationRoute"];
            if(!applicationRoute || [applicationRoute isEqualToString:@""]){
                hasValidConfiguration = NO;
                errorMessage = @"Open the bluelist.plist and set the applicationRoute to the Bluemix application's route";
            }
        }
  2. Сделайте запрос, чтобы инициализировать SDK и службу IBMData. Добавьте его сразу после чтения bluelist.plist из файла в IBM_AppDelegate.m
        if(hasValidConfiguration){
            // Инициализация SDK и служб Bluemix
    		[IBMBluemix initializeWithApplicationId:applicationId  andApplicationSecret:applicationSecret andApplicationRoute:applicationRoute];
            [IBMData initializeService];
        }else{
            [NSException raise:@"InvalidApplicationConfiguration" format: @"%@", errorMessage];
        }
        return YES;
    }
    
    @end

Шаг 5. Изменение класса IBM_ListViewController для вывода и сохранения данных из службы MBaaS Data

  1. Измените методы listItems, createItem, updateItem и deleteItem (IBM_ListViewController.m), чтобы сохранять изменения элемента в службе MBaaS Data.
    - (void)listItems: (void(^)(void)) cb
    {
    	IBMQuery *qry = [IBM_Item query];
        [[qry find] continueWithBlock:^id(BFTask *task) {
            if(task.error) {
                NSLog(@"listItems failed with error: %@", task.error);
            } else {
                self.itemList = [NSMutableArray arrayWithArray: task.result];
                [self reloadLocalTableData];
                if(cb){
                    cb();
                }
    
            }
            return nil;
    
        }];
    }
    
    - (void) createItem: (IBM_Item*) item
    {
        [self.itemList addObject: item];
        [self reloadLocalTableData];
    
        [[item save] continueWithBlock:^id(BFTask *task) {
            if(task.error) {
                NSLog(@"createItem failed with error: %@", task.error);
            }
            return nil;
        }];
    
    }
    
    - (void) updateItem: (IBM_Item*) item
    {
        self.editedCell.textLabel.text = item.name;
        [[item save] continueWithBlock:^id(BFTask *task) {
            if(task.error) {
                 NSLog(@"updateItem failed with error: %@", task.error);
            }
            return nil;
        }];
    
    }
    
    -(void) deleteItem: (IBM_Item*) item
    {
        [self.itemList removeObject: item];
        [self reloadLocalTableData];
        [[item delete] continueWithBlock:^id(BFTask *task) {
            if(task.error){
                 NSLog(@"deleteItem failed with error: %@", task.error);
            } else {
                [self listItems: nil];
            }
            return nil;
        }];
    
        // Выход из режима редактирования, чтобы не нажимать кнопку Done 
        [self.tableView setEditing:NO animated:YES];
    }

Шаг 6. Запуск приложения

  1. Теперь, когда все изменения внесены в код, он должен быть эквивалентным версии 1, и список элементов должен сохраняться!
  2. Выполните код в имитаторе iOS или на своем iOS-устройстве. Скриншот первой страницы приложения BlueList
  3. Добавьте в список несколько элементов.

    Добавление элементов в список
  4. Теперь выберите один элемент и измените его, кликнув на нем.

    Редактирование элемента
  5. Сохраните отредактированный элемент. Он должен измениться в представлении списка.
  6. Перезапустите приложение.
  7. Обратите внимание, что ваши данные сохраняются. Теперь ваши данные хранятся в облаке!

Шаг 7. Просмотр своих данных в облаке

  1. Войдите в Bluemix.
  2. Нажмите кнопку приложения на панели инструментов.
  3. Щелкните на MobileData Service.
  4. На вкладке Manage Data отображаются классы данных, хранящиеся в облаке, а также экземпляры каждого сохраненного класса данных. Просмотр данных
    Просмотр данных
  5. На вкладке Analytics отображаются различные аналитические данные по вашему приложению, включая общее число вызовов API устройством, вызовы API по типам и объем памяти, используемой для хранения. Статистика и графики
    Статистика и графики

Заключение

Разработка этого приложения с использованием службы MobileData на платформе Bluemix дает представление о том, как легко получать и использовать возможности по работе с данными на мобильных устройствах с помощью мобильных облачных служб!


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения, Облачные вычисления
ArticleID=996665
ArticleTitle=Создание iOS-приложения с использованием службы IBM Mobile Data для Bluemix
publish-date=02022015