O que é?

Mobile Backend Starter é uma aplicação backend genérica, extensível e escalável.

Ao utilizá-lo é possível manter o foco do desenvolvimento no aplicativo mobile e criar protótipos funcionais em muito menos tempo, já preparados para escalar em produção.

Arquitetura

  • Aplicativo "Mobile Backend" instalado no App Engine
  • Cloud Endpoints client libraries
  • Aplicativo Android/iOS desenvolvido utilizando as client libraries

Principais características

  • Autenticação integrada com Contas Google (OAuth2)
  • Acesso ao Datastore
    • Operações CRUD
    • Autorização por tipo de entidade
    • Schema-less
  • Chamadas de API assíncronas (Android)
  • Continuous query
    • Código Client/Server implementados
    • GCM para Android / APNS para iOS
  • Real-time Pub/Sub messaging

Setup

  • Deploy do backend
  • Configuração do backend
  • Ambiente de desenvolvimento (Android)
  • Exemplo: Guestbook

Deploy do backend

Configuração do backend

  • Config URL: https:// {{ your-project-id }} .appspot.com/admin/configure.jsp
  • API explorer: https:// {{ your-project-id }} .appspot.com/_ah/api/explorer

Configuração do backend

Habilitando Google Cloud Messaging (Android)

  • Acessar APIs & auth / Registered apps no Cloud Console (https://cloud.google.com/console)
  • Registrar um novo app "Mobile Backend", e selecionar "Web Application" no campo "Platform"
  • Copiar o API KEY do bloco Server Key e colar na parte de configuração do MBS

Ambiente de desenvolvimento (Android)

  • Instalar Eclipse e ADT
    • Instalar último Eclipse e Google Plugin for Eclipse
    • Android Developer Tools
    • Google App Engine Tools for Android
    • Android SDK
    • Android 4.0.3+
    • Em "Extras", Google Cloud Messaging for Android

Guestbook (Android)

  • Clone o repo https://github.com/GoogleCloudPlatform/solutions-mobile-backend-starter-android-client
  • Aplicar pull request #4
  • Adicionar o projeto "google-play-services_lib" no workspace do Eclipse
  • Editar no arquivo Consts.java as variáveis PROJECT_ID e PROJECT_NUMBER
  • Editar no arquivo Mobilebackend.java a variável DEFAULT_ROOT_URL

Guestbook (iOS)

  • Clone o repo https://github.com/GoogleCloudPlatform/solutions-mobile-backend-starter-ios-client
  • Editar no arquivo "Constants.m" as variáveis kCloudBackendClientID, kCloudBackendClientSecret e kCloudBackendServiceURL

Salvando no Datastore

Utilizando CloudBackendAsync

        
        CloudEntity newPost = new CloudEntity("Guestbook");
        newPost.put("message", mMessageTxt.getText().toString());
        
        CloudCallbackHandler<CloudEntity> handler = new CloudCallbackHandler<CloudEntity>() {
            @Override
            public void onComplete(final CloudEntity result) {
                mPosts.add(0, result);
                updateGuestbookView();
            }
        };
        
        getCloudBackend().insert(newPost, handler);
        
        
      

Continuous query

Apresentando dados de forma contínua

    private void listPosts() {
        CloudCallbackHandler<List<CloudEntity>> handler =
                new CloudCallbackHandler<List<CloudEntity>>() {
                    @Override
                    public void onComplete(List<CloudEntity> results) {
                        mPosts = results;
                        updateGuestbookView();
                    }
                };
        
        // FROM Guestbook ORDER BY _createdAt DESC LIMIT 50
        getCloudBackend().listByKind(
                "Guestbook", CloudEntity.PROP_CREATED_AT, Order.DESC, 50,
                Scope.FUTURE_AND_PAST, handler);
        
    }
        
      

Exemplo de CloudQuery

        CloudQuery cq = new CloudQuery("MyAddressBook");
        cq.setFilter(Filter.and(Filter.eq("name", "John Smith"), Filter.eq("label", "friends")));
        cq.setLimit(50);
        List<CloudEntity> results = cloudBackend.list(cq);
      

Segurança

Web Client ID (Android)

  • Acessar APIs & auth / Registered apps no Cloud Console (https://cloud.google.com/console)
  • Acessar o app "Mobile Backend" criado anteriormente
  • Copiar o CLIENT ID do bloco "OAuth 2.0 Client ID" e colar no campo "Web Client ID" na parte de configuração do MBS

Segurança

Android Client ID

  • Acessar APIs & auth / Registered apps no Cloud Console (https://cloud.google.com/console)
  • Registrar um novo app "Android Client", e selecionar "Android / Accessing APIs directly from Android" no campo "Platform"
  • Preencher "com.google.cloud.backend" no campo "Package name"
  • Executar o seguinte comando e preencher o campo "SHA1 fingerprint" com sua chave de debug:
                keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v
              
  • Copiar o CLIENT ID do bloco "OAuth 2.0 Client ID" e colar no campo "Android Client ID" na parte de configuração do MBS

Segurança

iOS Client ID

  • Acessar APIs & auth / Registered apps no Cloud Console (https://cloud.google.com/console)
  • Registrar um novo app "iOS Client", e selecionar "iOS / Accessing APIs directly from iOS" no campo "Platform"
  • Preencher o campo "Bundle ID" de acordo com o que estiver configurado no projeto
  • Copiar o CLIENT ID do bloco "OAuth 2.0 Client ID" e colar no campo "iOS Client ID" na parte de configuração do MBS

Segurança

Controle de acesso para Cloud Entities

PrefixoExemploget/queryupdate/deleteinsert
sem prefixoGuestbooktodosentity ownertodos
[private][private]Guestbookentity ownerentity ownertodos
[public][public]Guestbooktodostodostodos

Q&A

<Obrigado!>