terça-feira, 9 de junho de 2015

Programando em android com dados na "nuvem"

Bom dia pessoal,

Faz muito tempo que não escrevo, porém como estou num novo projeto, descobri umas ferramentas bem legais, e quis escrever aqui para compartilhar com vocês.

Bom, vou falar para vocês de um "framework" bem completo e no plano básico "grátis", conheçam o Parse.
Basicamente ele possibilita o armazenamento de dados na "nuvem", e para isso disponibiliza uma série de métodos e SDKs, para a maioria das linguagens utilizadas, "android, ios, c#, javascript, etc".
Ele também disponibiliza uma parte de "hospedagem" com node.

Agora vou focar na parte do android, com exemplos de como fazer a comunicação simples.

Primeiramente ele possui uma documentação bem explicada de todos os métodos e tudo que precisa saber. Android Guide
Com o guide deles vocês terão uma boa idéia de como fazer a comunicação e tudo mais, então vou colocar simplesmente uma classe de exemplo para que vocês possam utilizar, essa é a classe base que eu mesmo utilizo no meu projeto:


 import com.parse.Parse;  
 import com.parse.ParseException;  
 import com.parse.ParseObject;  
 public class Base {  
   protected String getParseClassName() {  
     return "";  
   }  
   public Base() {  
     backingObject = ParseObject.create(getParseClassName());  
   }  
   public Base(ParseObject object) {  
     setObject(object);  
   }  
   public void setObject(ParseObject object) {  
     backingObject = object;  
     setObject();  
   }  
   public void setObject() { }  
   public ParseObject getParseObject() {  
     return backingObject;  
   }  
   public void Save() throws ParseException {  
     getParseObject();  
     backingObject.save();  
     setObject();  
   }  
   protected ParseObject backingObject;  
   @Override  
   public int hashCode() {  
     return backingObject.getObjectId().hashCode();  
   }  
   @Override  
   public boolean equals(Object obj) {  
     if (obj == null)  
       return false;  
     if (obj == this)  
       return true;  
     return ((Base)obj).backingObject.getObjectId().equals(this.backingObject.getObjectId());  
   }  
 }  

Todas as classes de objetos do parse eu utilizo "extends Base" que basicamente ela possui um "ParseObject backingObject" o método "getParseClassName" serve para definir qual o nome da classe do objeto, seria a tabela do parse, eu deu override no hashcode e equals para comparar pelo ObjectId que é o id do parse.

Para vocês terem uma idéia de como utilizar essa classe base eu vou colocar uma classe simples que eu utilizo aqui:

 import com.parse.ParseException;  
 import com.parse.ParseObject;  
 import com.parse.ParseQuery;  
 import com.parse.ParseRelation;  
 public class Cidade extends Base {  
   public Cidade() {  
     super();  
   }  
   public Cidade(ParseObject object) {  
     super(object);  
   }  
   @Override  
   protected String getParseClassName() {  
     return "cidade";  
   }  
   public String getDescricao() {  
     return backingObject.getString("descricao");  
   }  
   @Override  
   public void setObject() {  
     //AQUI SERIA PARA COLOCAR RELAÇÕES COM OUTROS OBJETOS  
   }  
   @Override  
   public ParseObject getParseObject() {  
     ParseRelation relation = backingObject.getRelation("estado");  
     relation.add(estado.getParseObject());  
     return super.getParseObject();  
   }  
 }  


Espero que com isso vocês tenham um bom passo incial, e que comecem a pensar em utilizar o parse para envio de dados para nuvem.
Qualquer dúvidas/sugestões, etc podem postar no comentário que eu respondo.

Até a próxima!