Objetivo

Suportar a renderização de páginas e widgets da plataforma fluig no aplicativo mobile.

Nome técnico: Renderizador Widgets Aplicativo Mobile.
Nome comercial: Aplicativo Mobile - Suporte à páginas e Widgets.
Forma de distribuição: Plataforma e Mobile (Android, iOS e Windows Phone).

  

Definições Gerais 

Para que uma página esteja disponível no aplicativo mobile, deve existir pelo menos uma instância de Widget habilitada para o aplicativo mobile na página. Para habilitar as instâncias de Widgets para o aplicativo mobile será necessário:

  1. Acessar o modo de edição da página;
  2. Assinalar quais widgets da página serão apresentadas no aplicativo mobile, clicando no ícone Habilitar no aplicativo mobile. Este ícone só estará presente para widgets que possuam suporte ao aplicativo mobile;
  3. Publicar a nova versão da página. 

Caso tenha pelo menos uma instância de Widget habilitada para o aplicativo mobile no momento da publicação da nova versão da página, ela ficará disponível para o aplicativo mobile, caso contrário não ficará disponível.

A definição de que uma widget possui suporte ao aplicativo mobile é feita através da propriedade booleana application.mobileapp presente no arquivo application.info. Esta propriedade será adicionada pelo desenvolvedor da widget, e caso não seja informada irá assumir o valor padrão: false.

A renderização das páginas no aplicativo mobile será enxuta, apresentando apenas o conteúdo das widgets habilitadas sequencialmente, conforme exemplo abaixo:

 

 

No aplicativo do fluig os widgets ficarão disponíveis  de três formas:

Os widgets devem ser responsivos para melhor visualização no mobile, por isso é recomendado a utilização de  componentes do fluig Style Guide no seu desenvolvimento.  De qualquer forma, a responsabilidade pelo desenvolvimento do widget ou adequação para o mobile é de inteira responsabilidade do cliente para widgets desenvolvidas por ele.  

Definições Técnicas

Opção Mobile para páginas

Será adicionado o atributo booleano enabledMobileApp na entidade WCMPageVersion para controlar a disponibilidade da página no aplicativo mobile e a opção Exibir página no aplicativo mobile (somente leitura) no formulário de cadastro de páginas.

O valor do atributo enabledMobileApp será atribuído no momento da publicação de uma nova versão da página, assumindo o valor true quanto existir pelo menos uma instância de Widget habilitada para o aplicativo mobile na página, e o valor false quanto não existir nenhuma instância de Widget habilitada para o aplicativo mobile.

Opção Mobile para widgets

Será adicionado o atributo booleano mobileAppWidget na entidade WCMWidget. O valor do atributo mobileAppWidget será atribuído durante o processo de deploy da Widget de acordo com o valor da propriedade application.mobileapp presente no arquivo application.info, caso não for encontrada a propriedade irá assumir o valor padrão false

Será adicionado o atributo booleano enabledMobileApp na entidade WCMPageWidget e o ícone Habilitar no aplicativo mobile no modo de edição da Widget, sendo apresentado somente para as instâncias de uma Widget com suporte ao aplicativo mobile.

Renderizador para o Aplicativo Mobile

Para a renderização de páginas e widgets no aplicativo mobile será adicionado o método renderMobileAppPage na interface PageRenderer. Este método será invocado pelo RequestPipeline quando o header User-Agent da requisição possuir um product identifier igual a FluigApp/{fluig_app_version}.

A implementação do método renderMobileAppPage utilizará o template mobileapp-master.ftl, que será uma versão simplificada do master.ftl. Este template apresentará somente o conteúdo das instâncias de widgets que possuem o atributo enabledMobileApp igual a true, de forma sequencial, sem apresentar o título padrão da Widget e desconsiderando o layout definido para a página em questão.

A autentificação no fluig deve ser feita através do protocolo OAuth v1.0a (conforme já é realizado pelo aplicativo mobile para requisições na API do fluig).

Desenvolvimento de Widgets

Para o desenvolvimento de Widgets será adicionado o suporte à propriedade application.mobileapp no arquivo application.info para que o desenvolvedor possa determinar se a Widget pode ser renderizada no aplicativo mobile. Este propriedade será processada durante o deploy da Widget pelo DeploymentServiceBean.

Será adicionado a variável booleana mobileAppMode no template do FreeMarker que determinará se a Widget está sendo renderizada através de uma requisição do aplicativo mobile. O fluig irá verificar o header User-Agent da requisição e caso seja oriundo do aplicativo mobile o valor da variável mobileAppMode será true. Através desta variável o desenvolvedor poderá modificar o comportamento da Widget quando renderizada pelo aplicativo mobile. O valor da variável mobileAppMode também estará disponível via JavaScript através do método WCMAPI.isMobileAppMode().

Exemplo de utilização:

if (WCMAPI.isMobileAppMode()) {
    this.DOM.find('a').attr('href', '#');
}

API Pública

Será disponibilizado um novo serviço na API Pública para realizar a consulta de páginas do fluig. Esta consulta retornará somente as páginas que o usuário tenha permissão de visualização. O retorno do serviço será paginado com uma lista de PageVOs contendo as informações das páginas, entre elas a URL de acesso, URL do ícone, páginas filhas (quando houverem) e se está disponível para o aplicativo mobile. Será possível informar os seguintes filtros:

 

Além disso, o serviço social que retorna os dados da comunidade deve trazer como parâmetro se existe widgets mobile naquela página e a URL de acesso a página da comunidade. 

 

Definições Mobile

 

Todas as interfaces devem ser desenvolvidas nativamente, com exceção da visualização das  widgets da página que será renderizada pelo webview nativo de cada plataforma.

 

Para interceptar os links e direcionar para funções nativa, caso o aplicativo trate o tal link, será utilizado o linkIntercept. Para interceptar as requisições que serão direcionadas para o linkIntercept, será utilizado um proxy no caso do iOS e Android, e no Windows Phone, devido a uma limitação técnica, será percorrida a estrutura da página para verificar se existe link e fazer o envio para a função nativa em caso de acionamento.

Obs.: No caso do Windows Phone será percorrida apenas a página, ou seja, não será percorrido nenhuma referência interna ou externa

 

Qualquer tipo a autenticação requerido pela widget é de inteira responsabilidade do servidor do fluig (SSO, por exemplo), o mobile é apenas responsável por mostrar o HTML retornado pelo servidor no webview.

 

Telas de configuração