Desenvolva um aplicativo de iOS usando o serviço de nuvem MobileData

25/Abr/2014
 
author photo - kevan holdaway

Kevan Holdaway

Software Engineer, IBM Mobile Cloud Services

 

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

 

Acesse IBM Bluemix
Esta plataforma em nuvem é abastecida com serviços gratuitos, tempos de execução, e infra-estrutura para ajudá-lo a criar e implantar rapidamente o seu próximo ou aplicativo móvel ou na web.

Talvez você já conheça alguns benefícios do Codename: BlueMix, a plataforma aberta da IBM para desenvolver e implementar aplicativos móveis e da web. Com os vários serviços pré-integrados no CodeName: BlueMix os desenvolvedores têm mais facilidade para desenvolver e aprimorar aplicativos. Neste artigo, mostraremos como desenvolver um aplicativo iOS usando o serviço MobileData.

Você já foi ao mercado e esqueceu exatamente o ingrediente necessário para a receita que a sua mulher queria fazer? Ou o doce que as crianças queriam levar na lancheira no dia seguinte? E se eles pudessem inserir seus pedidos em uma lista de compras compartilhada e você pudesse receber notificações push avisando sobre as atualizações?

Conheça o aplicativo BlueList. É um aplicativo iOS simples, no qual incluímos o serviço MobileData para armazenar, excluir, atualizar e consultar objetos armazenados na nuvem. Um artigo futuro irá mostrar como incluir os serviços Push e CloudCode, para que você possa obter notificações quando a lista é atualizada (serviço Push) e para que a lista possa ser atualizada em todos os dispositivos quando um dos dispositivos atualiza a lista de alguma forma (serviço CloudCode).

Este aplicativo simples usa serviços BlueMix e, com ele, você começará rapidamente a escrever seus próprios aplicativos (mais complexos).

A v0 é a versão de base do aplicativo BlueList. Mostraremos como incluir o serviço MobileData, para que o seu código se pareça com o código da v1. É possível iniciar com a v0 e realizar as etapas ou adiantar-se fazendo o download da v1 diretamente. A v1 do aplicativo BlueList inclui o serviço MobileData.

O que será necessário para o seu aplicativo

 
  • Familiaridade básica com o desenvolvimento em iOS. O artigo do Apple Developer "Start Developing iOS Apps Today" descreve como instalar o Xcode e escrever um aplicativo básico.
  • O código da v0 proveniente do JazzHub (clique no botão acima). Execute esse código no seu emulador. Reinicie o aplicativo e observe que os itens da lista não persistem. As etapas deste artigo mostrarão como incluir o serviço MobileData no seu aplicativo, para que os itens da lista persistam.
  • Um módulo Codename: BlueMix ID, para poder obter o serviço MobileData.

ETAPA 1. Crie um Mobile App Services Boilerplate no BlueMix

 
  1. Efetue login no BlueMix.
  2. Clique em Add an application para ir ao catálogo.
  3. Clique em Mobile Backend Starter, em Boilerplates.

    Clique para ver a imagem maior

  4. Clique em Create Application.

    Clique para ver a imagem maior

  5. Preencha o painel de aplicativo e clique em Create.

    Clique para ver a imagem maior

Etapa 2. Instale e configure os SDKs

 
  1. Clique em Get the IBM SDK for iOS.

    Clique para ver a imagem maior

    Observação: Você irá precisar do ID de aplicativo nesta página na etapa 6.

  2. Em Finder, localize o IBMCore Framework (<unzipped_location>/IBMCore.framework). Arraste essa estrutura para o projeto BlueList Xcode na pasta Frameworks.
  3. Marque "Copy items into destination group's folder (if needed)".
  4. No Finder, localize o Data SDK Framework (<unzipped_location>/IBMData.framework). Arraste essa estrutura para o projeto BlueList Xcode, sob a pasta Frameworks, como você fez como o IBMCore Framework.
  5. Em Finder, localize o arquivo configuration.json (<unzipped_location>/configuration.json). Arraste isso para o grupo Supporting Files no projeto Xcode.
  6. Modifique configuration.json para que ele contenha o ID de aplicativo. (Para chegar ao ID de aplicativo, acesse a página SDKs efetuando login no Codename: BlueMix, indo para o Dashboard, clicando no aplicativo desejado e em SDKs.)
                            {
                            	applicationID:"<INSERT_APPLICATION_ID_HERE>"
                            }
  7. Observação: Ao criar um novo aplicativo de iOS usando o XCode, é necessário incluir o sinalizador do vinculador -ObjC nas configurações da construção. Para fazer isso, você seleciona o destino do aplicativo e clica em Build Settings. A partir daqui, é possível procurar "Other Linker Flags". Se você não vir isso, certifique-se de ter selecionado "All" (todas) as configurações e não "Basic". Incluímos o sinalizador no projeto de amostra para você.

    Clique para ver a imagem maior

Etapa 3. Modifique o código para utilizar o serviço Data

 
  1. Open IBM_Item.h. Revise o código atual.
    #import <Foundation/Foundation.h>
    
    @interface IBM_Item : NSObject
    
    @property(nonatomic, copy) NSString *name;
    
    @end
  2. Mude a superclasse para IBMDataObject e faça com que o IBM_Item se adapte ao protocolo IBMDataObjectSpecialization. A adaptação ao protocolo IBMDataObjectSpecialization irá informar ao protocolo que você irá implementar os métodos IBMDataObjectSpecialization na sua classe IBM_Item.
    #import <Foundation/Foundation.h>
    #import <IBMData/IBMData.h>
    
    @interface IBM_Item : IBMDataObject <IBMDataObjectSpecialization>
    
    @property(nonatomic, copy) NSString *name;
    
    @end
  3. Implemente o método dataClassName e marque a propriedade do título como dinâmica. Além disso, registre a especialização na inicialização do método da classe. Isso cria um mapeamento entre a classe IBM_Item Objective-C e a classe de JSON "Item" que persiste na nuvem.
    #import "IBM_Item.h"
    
    @implementation IBM_Item
    
    @dynamic name;
    
    +(void) initialize
    {
       [self registerSpecialization];
    }
    
    +(NSString*) dataClassName
    {
       return @"Item";
     }
    
    @end

Etapa 4. Vincule o SDK MBaaS no delegado do aplicativo

 
  1. Faça uma solicitação para inicializar o SDK dos serviços de MBaaS. Isso carrega o ID do aplicativo e inicialize os serviços de MBaaS com ele.

    Clique aqui para ver lista de códigos

    #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

Etapa 5. Modifique a classe IBM_ListViewController para carregar e persistir dados do serviço MBaaS Data.

 
  1. Modifique os métodos loadItems, createItem, updateItem e deleteItem (IBM_ListViewController.m) para persistir as mudanças de item no serviço MBaaS Data.

    Clique aqui para ver lista de códigos

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

Etapa 6. Execute o aplicativo

 
  1. Agora que você fez todas as mudanças no código, o seu código deve ser equivalente à versão 1, e os itens da sua lista devem persistir!
  2. Execute o código no iOS Simulator ou no dispositivo de iOS.
  3. Inclua alguns itens na lista.

  4. Agora escolha um item e edite-o clicando nele.

  5. Salve o item que você editou. Agora ele deve ser modificado na visualização de lista.
  6. Reinicie o aplicativo.
  7. Observe que os seus itens de dados persistiram. Agora os dados persistiram na nuvem!

Etapa 7. Veja os seus dados na nuvem

 
  1. Efetue login no BlueMix.
  2. Clique no seu aplicativo na visualização Dashboard.
  3. Clique em SERVICES.
  4. Clique em MobileData service. Essa página Data Viewer mostra as classes de dados que estão sendo armazenadas na nuvem e as instâncias de cada classe de dados que está persistindo.

    Clique para ver a imagem maior

Conclusão

 

O desenvolvimento deste aplicativo usando o serviço MobileData disponível em Codename: BlueMix deve dar a você uma noção de como é fácil consumir e integrar recursos de dados remotos usando serviços remotos de nuvem!


Temas relacionados:Serviço MobileData (aplicativo do Android)

Incluir um comentário

Observação: elementos HTML não são suportados nos comentários.


1000 caracteres restantes

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Desenvolvimento móvel, Cloud computing
ArticleID=969696
ArticleTitle=Desenvolva um aplicativo de iOS usando o serviço de nuvem MobileData
publish-date=04252014