A Maven possui uma solução perfeita para seu Portal de Notícias, podendo manter seu fornecedor do portal e realizar a integração com nosso aplicativo. Para realizar essa integração precisamos que seja entregue de preferência em JSON as informações abaixo:

Requisitos do webservice:


  • Deve funcionar com HTTP em modo REST
  • Deve entregar conteúdo em json
  • Deve entregar no mínimo as informações abaixo.


Serviços obrigatórios

Serviço 1 - Lista de menus

O aplicativo precisa construir um menu para a navegação do usuário. Normalmente esse menu possui as seções do portal, sejam elas categorias de notícias ou links web responsivos.

Exemplo de retorno abaixo.


[   {
/* Atributos obrigatorios */ 
    "id":"id do menu",    
    "name":"Nome do menu"
/* Atributos opcionais */    
    "pageUrl":"caso o menu seja webview, fornecer o link http",    
    "color":"#hexadecimal da cor da fonte",    
    "bgcolor":"#hexadecimal da cor de fundo",    
    "iconeMenuapp":"Link http do ícone 32x32",    
    "iconcolor":"Cor do ícone caso não tenha imagem acima",    
    "appVertical":"S se deve aparecer no menu vertical. N para não aparecer",    
    "appHorizontal":"S se deve aparecer no menu horizontal. N para não aparecer",    
    "subMenus": [ .. outros menus igual acima .. ]  
    },  
    { .. outros menus ..}
]


Se o item do menu tiver uma pageURL então ele vai abrir uma webview no app. Senão ele vai buscar as notícias do serviço 2 com base no ID do menu clicado.


Serviço 2 - Lista de notícias


O serviço de busca de notícias deve entregar as matérias paginadas para o aplicativo de forma rápida e respeitando alguns parâmetros. Recomendamos no máximo 10 matérias por página pois o aplicativo fica consultando várias vezes o serviço mesmo em background.

A lista de matérias deve receber no mínimo os seguintes parâmetros:

  • page = Número da página para que seja feita a paginação de scroll infinito no aplicativo.
  • timestamp = O app envia o timestamp da matéria mais recente que ele buscou para que o serviço entregue apenas matérias novas. 
  • menuID = Opcional, é o ID do menu para trazer matérias somente deste menu. Senão informado ele deve buscar as matérias da home

Exemplo de retorno:


[   
  {
/* Atributos obrigatorios */ 

    "id":"id da noticia",    
    "title":"titulo da noticia",    
    "url":"URL da webview - recomendamos que seja no padrão AMP",    
    "summary": "chamada destaque da noticia",    
    "timestamp":"Data, hora, minuto, milisegundo da noticia",    
    "priority":"high, medium, low - notícias high ficam no topo - por padrão todas são medium",    
    "cartola": "Texto da cartola, senão será usado o nome do menu" ,    
    "bloqueio":"S para Sim, somente usuarios logados podem ler. N para não, matéria publica"

/* Atributos opcionais */    

    "thumb": "URL da imagem da noticia - recomendada,      
    "copyrightThumb":"Se a imagem possui direito autoral, informar o nome",    
    "color":"Cor da cartola da matéria",    
    "bgColor":"Cor de fundo da cartola",    
    "videoCapa":"Se ao inves da foto for um video - só aparece na primeira materia do topo - Suporta apenas Youtube"
},  
{ .. outras matérias ..}
]


Serviços opcionais


Serviço 3 - Pesquisa de notícias


Se você quiser fornecer o recurso de busca para seus leitores, precisamos de um serviço de pesquisa conforme especificação abaixo.

A pesquisa deve receber os seguintes parâmetros:

  • keyword = Termo da pesquisa
  • page = Número da página para que seja feita a paginação de scroll infinito no aplicativo.
  • resumo = S se sim, N se não. Se for pesquisa resumida a entrega do conteúdo é menor - veja mais abaixo.

Exemplo de retorno da entrega resumida: 

  • Você deve limitar este retorno em no máximo 10 itens, sem paginação.


[   
  {    
    "id":"id da noticia",    
    "title":"titulo da noticia",    
    "url":"URL da webview - recomendamos que seja no padrão AMP",    
    "summary": "chamada destaque da noticia",    
    "timestamp":"Data, hora, minuto, milisegundo da noticia"}, 
{... outras materias ..}  
]


Exemplo de retorno da entrega completa:

Exatamente igual ao Serviço 2.

O que é a "entrega resumida" ? Quando o usuário começa a digitar o termo a ser pesquisado o aplicativo faz uma consulta parcial e apresenta uma prévia do resultado ao usuário e nisso ele usa a pesquisa resumida. Se ele não escolhe nenhuma matéria da pesquisa resumida, então ele faz a pesquisa completa.


Serviço 4 - Banners 


Os banners aparecem no scroll vertical do aplicativo entre as matérias. Você não precisa criar um novo serviço para isso, basta mudar o serviço 2 de lista de notícias para incluir um objeto diferente entre as notícias, mas com os mesmos atributos - exemplo abaixo.

[   
  {... materia A.. }, 
  { .. materia B ..}  
  {    "id":"id do banner",    
       "title":"Nome do banner - identificador",    
       "timestamp":"Data, hora, minuto, milisegundo da campanha",    
       "url":"URL clicavel - caso o banner nao seja um script",       
       "thumb": "URL da imagem do banner, caso não seja um script",    
       "videoCapa":"Se a campanha for um video, informar a URL - Suporta apenas Youtube",    
       "html": "Se o banner for em javascript, colocar o script aqui. Você pode usar CDATA ou codificar em base64"  },  
  { .. outras matérias ..}
]