Skip to main content

Compreender aplicativos forcedroid

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Descrever o fluxo geral de um aplicativo nativo do Salesforce Mobile SDK para Android
  • Identificar as duas classes principais de um aplicativo forcedroid
  • Listar as tarefas tratadas pelo objeto SalesforceSDKManager em seu nome

Visão geral do fluxo do aplicativo

Você criou e executou um novo aplicativo nativo forcedroid. Tem curiosidade de saber como ele funciona?

Veja um diagrama que mostra como o fluxo de inicialização do aplicativo funciona em alto nível.

Fluxo do aplicativo Android

No seu aplicativo, “Application Object” (Objeto do aplicativo) é uma instância da classe MainApplication e “Main Activity” (Atividade principal) representa a classe MainActivity. A classe MainApplication cria os componentes básicos do seu aplicativo e passa o controle para o objeto singleton MobileSyncSDKManager. MobileSyncSDKManager, uma subclasse de SalesforceSDKManager, por sua vez inicia o fluxo de login do Salesforce e, se a autenticação do usuário for bem-sucedida, passa o controle para a classe MainActivity. MainActivity cria uma instância e exibe tudo o que aparece na tela do modo de exibição de lista.

Senhas, login, logout e limpeza são tarefas geridas pelo singleton MobileSyncSDKManager. Os objetos de classe internos cuidam dos protocolos OAuth. Como você pode ver, a parte de senha do fluxo é opcional. Ela só ocorre se seu aplicativo conectado permitir senhas, e um administrador do Salesforce pode reverter essa política a qualquer hora. De qualquer forma, você não precisa se preocupar com senhas. O Mobile SDK oferece implantação completa nos bastidores.

O que é um aplicativo forcedroid?

Um aplicativo nativo forcedroid implanta somente as funções básicas. O usuário pode alternar entre visualizar uma lista de Contatos e uma lista de Contas; é basicamente isso. No entanto, o aplicativo serve como trampolim para as suas ideias incríveis. Você pode aprimorar seu aplicativo:
  • Executando operações CRUD (Create, Read, Update, Delete – Criar, Ler, Atualizar, Excluir) nos registros do Salesforce
  • Adicionando atividades personalizadas
  • Chamando outros componentes
  • Fazendo tudo o que o escopo do projeto, sua imaginação e a tecnologia atual permitirem

Quando o forcedroid cria um aplicativo nativo, ele faz uma cópia de um modelo do Mobile SDK e o personaliza para corresponder à entrada da linha de comando. Vejamos alguns dos itens padrão que esse processo padronizado cria.

Cada aplicativo forcedroid define duas classes Android públicas:
  • Uma classe de aplicativo que estende android.app.Application. Essa classe serve como o ponto de entrada do aplicativo. Essa classe se chama MainApplication no seu aplicativo.
  • Uma classe de atividade principal que estende android.app.Activity. Essa classe define uma tela e contém a maior parte da lógica personalizada do aplicativo. Essa classe se chama MainActivity nos aplicativos forcedroid. Ela estende SalesforceActivity, que, por sua vez, estende android.app.Activity.

Assim como com qualquer aplicativo Android, o arquivo AndroidManifest.xml designa a configuração do aplicativo especificando a classe de aplicativo e todas as classes de atividade.

A classe Application

Sua classe application conclui duas tarefas principais:

  • Substitui o método Application.onCreate() do Android.
  • Em sua substituição onCreate():
    • Chama o método onCreate() da superclasse.
    • Inicializa Salesforce Mobile SDK chamando initNative() no objeto do SDK Manager (MobileSyncSDKManager).
    • Fornece código comentado opcional que você pode restaurar para utilizar seu aplicativo como um provedor de identidade do Salesforce.
    • Fornece código comentado opcional que você pode restaurar para dar suporte a notificações por push.
Vamos dar uma olhada rápida no código.
  1. Na tela de boas-vindas do Android Studio, selecione Import project (Eclipse ADT, Gradle, etc.) (Importar projeto (Eclipse ADT, Gradle, etc.)). Ou, se o Android Studio já estiver aberto, clique em File | Open... (Arquivo | Abrir...).
  2. Navegue até o diretório de destino especificado no prompt de comando do forcedroid e selecione-o. (Dica: O diretório de destino será “TrailAndroidApps” se você não tiver quebrado as regras.)
  3. Clique em Escolher.
  4. Quando a janela de edição do Android Studio aparecer, abra o modo de exibição Project (Projeto) (View | Tool Windows | Project (Ver | Janelas de ferramentas | Projeto)).
  5. Na janela Project (Projeto), expanda app | java | com.mytrail.android e clique duas vezes em MainApplication.

A classe MainApplication é muito simples. Ela define uma substituição de um único método de classe base, onCreate(). O que essa substituição faz? Ela chama o método de superclasse OnCreate() e inicializa o objeto singleton MobileSyncSDKManager.

/**
 * Application class for our application.
 */
public class MainApplication extends Application {

	@Override
	public void onCreate() {
		super.onCreate();
		MobileSyncSDKManager.initNative(getApplicationContext(), MainActivity.class);

              /*
               * Uncomment the following line to enable IDP login flow. This will allow the user to
               * either authenticate using the current app or use a designated IDP app for login.
               * Replace 'idpAppURIScheme' with the URI scheme of the IDP app meant to be used.
               */
		// MobileSyncSDKManager.getInstance().setIDPAppURIScheme(idpAppURIScheme);

		/*
		 * Un-comment the line below to enable push notifications in this app.
		 * Replace 'pnInterface' with your implementation of 'PushNotificationInterface'.
		 * Add your Google package ID in 'bootonfig.xml', as the value
		 * for the key 'androidPushNotificationClientId'.
		 */
		// SalesforceSDKManager.getInstance().setPushNotificationReceiver(pnInterface);
	}
}
Quando o objeto MobileSyncSDKManager é inicializado, ele começa a ser executado e não vemos a classe MainApplication novamente. Observe que MobileSyncSDKManager precisa de duas coisas para se inicializar:
  • Um contexto de aplicativo, para saber como encontrar a configuração do seu aplicativo.
  • Uma referência à classe mainactivity, MainActivity.class, que MobileSyncSDKManager usa no final do fluxo de login para iniciar a lógica personalizada do seu aplicativo.
Com esse pequeno pedaço de código gratuito, seu aplicativo recebe a senha, o login e o logout, o OAuth e a criptografia de dados de usuário. Um bom negócio, não é?

A classe MainActivity

Por sorte, o forcedroid é inteligente o suficiente para fazer com que a classe MainActivity estenda SalesforceActivity. Isso significa que você recebe várias coisas interessantes de graça. Por exemplo, SalesforceActivity trata eventos de pausa e retomada automaticamente, inclusive novas inserções de senha necessárias. Se você usou alguma classe base de atividade que não é do Salesforce, o que não é proibido, mas também não é recomendado, terá que escrever esse código por conta própria. Você pode definir quantas classes de atividade forem necessárias para seu aplicativo. No entanto, é bom que cada atividade estenda uma classe base do Mobile SDK, como SalesforceActivity ou SalesforceListActivity.

A classe MainActivity se ocupa com o envio de uma consulta REST para o Salesforce e o processamento da resposta. Ela usa os registros recebidos do Salesforce para preencher um modo de exibição de lista. Ela também cria dois botões que permitem ao usuário optar por consultar Contas ou Contatos, além de um botão para limpar a exibição do registro e outro para fazer o logout.

Veremos os detalhes da interação REST posteriormente. Por enquanto, vejamos como e onde esses botões de IU são configurados.
  1. Na janela Project (Projeto) do Android Studio, expanda MyTrailNative | res | layout e clique duas vezes em main.xml.
  2. Na parte inferior da janela do editor, selecione a guia Text (Texto).
A guia Text (Texto) mostra uma janela separada com um designer visual à direita e o arquivo de configuração XML do modo de exibição à esquerda. Um clique em uma área do designer visual destaca a configuração XML dessa área. Se você clicar no botão FETCH CONTACTS (BUSCAR CONTATOS), por exemplo, o editor destacará um nó <LinearLayout>/<Button>. Os atributos no nó especificam as características do botão: aparência, identificação e comportamento. Verifique a documentação de desenvolvedor do Android para saber mais sobre os detalhes de configuração de IU.
Se você clicar no cabeçalho do modo de exibição, por exemplo, no botão Logout, o editor destacará um nó <include>:
<include layout="@layout/header" />
Esse nó indica que o cabeçalho está definido em outro arquivo XML. A julgar pelo atributo layout, você poderá encontrar header.xml com facilidade no mesmo caminho de main.xml. Bem simples!

O manifesto do aplicativo

O arquivo AndroidManifest.xml do seu projeto revela a configuração mais básica do aplicativo: seu nome, ícone, atividade principal, versões da API do Android mínima e desejada, e muito mais. Veja você mesmo!
  1. Na janela Project (Projeto) do Android Studio, expanda app.
  2. Clique duas vezes em AndroidManifest.xml.
No nó raiz <manifest>, logo após a declaração do namespace, você verá o nome do pacote do seu aplicativo declarado:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mytrail.android"
    android:versionCode="1"
    android:versionName="1.0"
    android:installLocation="internalOnly">
O elemento raiz <manifest> contém um nó <application> que define a configuração básica do seu aplicativo. No nível superior, esse nó define os atributos que indica ao soberano Android o nome da classe de inicialização do aplicativo forcedroid.
<application android:icon="@drawable/sf__icon"
    android:label="MyTrailNative"
    android:name=".MainApplication"
    ...
O prefixo “.” diz ao Android para colocar o nome do pacote do aplicativo, com.mytrail.android, antes desse caminho de classe.

Além disso, todas as atividades definidas por você ou pelo forcedroid ganham uma descrição aqui. Por exemplo, o nó único application/activity nesse caso representa a primeira atividade que aparece após o login. Como pode ver, a propriedade android:name da atividade faz referência ao nome de classe da sua atividade principal. Eis o fragmento XML application/activity de um arquivo AndroidManifest.xml do forcedroid.

<!-- Launcher screen -->
<activity android:name=".MainActivity"
    android:label="@string/app_name"
	android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
	<intent-filter>
		<action android:name="android.intent.action.MAIN" />
		<category android:name="android.intent.category.LAUNCHER" />
	</intent-filter>
</activity>

Todas as outras coisas que aparecem no arquivo de manifesto padrão são configurações padrão do Android. Assim como acontece com qualquer aplicativo Android, você pode adicionar os próprios componentes do seu aplicativo ao nó <application>, como atividades, serviços e receptores personalizados.

Agora que você aprendeu o que é um aplicativo forcedroid, vamos prosseguir com as informações que você tanto esperava: como acessar dados do Salesforce.

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback