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.
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?
- 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.
- 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.
- 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 (Arquivo | Abrir...).
- 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.)
- Clique em Escolher.
- Quando a janela de edição do Android Studio aparecer, abra o modo de exibição Project (Projeto) ( (Ver | Janelas de ferramentas | Projeto)).
- Na janela Project (Projeto), expanda 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); } }
- 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.
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.
- Na janela Project (Projeto) do Android Studio, expanda e clique duas vezes em main.xml.
- Na parte inferior da janela do editor, selecione a guia Text (Texto).
<include layout="@layout/header" />
O manifesto do aplicativo
- Na janela Project (Projeto) do Android Studio, expanda .
- Clique duas vezes em AndroidManifest.xml.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mytrail.android" android:versionCode="1" android:versionName="1.0" android:installLocation="internalOnly">
<application android:icon="@drawable/sf__icon" android:label="MyTrailNative" android:name=".MainApplication" ...
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.