O documento resume as principais funcionalidades do Firebase para construção de aplicativos Android, incluindo banco de dados em tempo real, autenticação de usuários e hospedagem de aplicativos. Ele também explica como configurar o ambiente de desenvolvimento e realizar operações básicas como salvar, buscar e monitorar dados no Firebase.
11. Referência Firebase
Firebase refUsers = new Firebase(”https://meuprimeiroapp.firebaseio.com/users/”);
refUsers.child(”joao@mail.com”);
Referência(”https://meuprimeiroapp.firebaseio.com/users/joao@mail.com”);
12. Model
public class Usuario{
private String email;
private String nome;
public Usuario() {
}
public Usuario(String email, String nome) {
this.email = email;
this.nome = nome;
}
public String getEmail() {
return email;
}
public String getNome() {
return nome;
}
}
“jam@mail,com":{
"email": “jam@mail.com",
"nome": “Android Jam"
}
Java Object Model JSON Object
Tipos de Dados:
• String
• Boolean
• Long
• Double
• Map<String, Object>
• List<Object>
13. Salvando Dados
• setValue() – Salva ou sobrescreve um valor no path definido
• updateChildren() – Atualiza algumas das chaves sem substituir todos os dados
• push() – Adiciona para o Firebase gerando um um id único
• runTransaction() – Usa transação do Firebase para evitar concorrência e dados
que podem ser corrompidos
14. Salvando Dados
private void criarUsuario(String email, String nome){
Usuario user = new Usuario(email, nome);
Firebase refUsers = new Firebase("https://URL-FIREBASE-APP/users/")
.child(email.replace(".", ","));
refUsers.setValue(user);
}
new Usuario().criarUsuario("androidjam@mail.com", "Android-Jam-2");
Map<String, Object> userName = new HashMap<>();
userName.put("nome", "AndroidJam");
refUsers.updateChildren(userName);
refUsers.push();
refUsers.setValue(user);
String key = refUsers.getKey();
refUsers.runTransaction(new Transaction.Handler() {
@Override public Transaction.Result doTransaction(MutableData currentData) {
currentData.child(user.email).setValue(user);
return Transaction.success(currentData);
}
@Override
public void onComplete(FirebaseError firebaseError,
boolean commited, DataSnapshot dataSnapshot) {
//Commit na transaction
}
});
push()updateChildren()
setValue()
runTransaction()
16. Buscando e monitorando
Dados
• Ao adicionar o listener addValueEventListener é necessário implementar os
métodos onDataChange() e onCancelled()
Firebase refUserName = new Firebase("https://URL-FIREBASE-APP/users/"
+ "androidjam@mail,com/nome");
refUserName.addValueEventListener(new ValueEventListener() {
@Override public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("FIREBASE", dataSnapshot.getValue().toString());
//dataSnapshot.getValue().toString == Android-Jam-2
}
@Override public void onCancelled(FirebaseError firebaseError) {
Log.d("FIREBASE", firebaseError.getMessage());
}
});
17. Buscando e monitorando
Dados
•Child Added – É disparado toda vez que é adicionado algum objeto no pai
Firebase refUsers = new Firebase("https://URL-FIREBASE-APP/users/");
mRefUsers.keepSynced(true);
refUsers.addChildEventListener(new ChildEventListener() {
@Override public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
Usuario usuario = dataSnapshot.getValue(Usuario.class);
}
}
• Ao adicionar o listener addChildEventListener é necessário implementar os
métodos onChildAdded(), onChildChanged(), onChildRemoved() e
onChildMoved() esse listener é usado geralmente para obter uma lista de
itens no Firebase
18. Buscando e monitorando
Dados
•Child Changed – Ocorre toda vez que um filho ou um descendente é alterado
@Override public void onChildChanged(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
Usuario u = dataSnapshot.getValue(Usuario.class);
}
}
•Child Removed – Disparado toda vez que um filho é removido podendo-se obter
o filho removido
@Override public void onChildRemoved(DataSnapshot dataSnapshot) {
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
Usuario u = dataSnapshot.getValue(Usuario.class);
}
}
•Child Moved – Evento usado quando se trabalha com ordenação de dados
@Override public void onChildMoved(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
Usuario u = dataSnapshot.getValue(Usuario.class);
}
}
22. Cloudinary
O que é?
O Cloudinary é um serviço de gerenciamento de imagens e arquivos
na nuvem. Além de oferecer o serviço de hospedagem de imagens,
ele disponibiliza diversas manipulações, uso de efeitos, detecção
facial e muitos outros recursos para as imagens enviadas.
O que é preciso?
Cadastrar-se gratuitamente, o cadastro pode ser feito com uma conta
gratuita limitada.
https://cloudinary.com/users/register/free
23. Cloudinary
Configurando
compile 'com.cloudinary:cloudinary-android:1.4.1'
Cloudinary cloudinary = new Cloudinary(Constants.CLOUDINARY_URL);
cloudinary.uploader().upload(inputStream, Collections.emptyMap());
Upload com parametros
Cloudinary cloudinary = new Cloudinary(Constants.CLOUDINARY_URL);
cloudinary.uploader().upload(inputStream,
ObjectUtils.asMap("transformation",
new Transformation().width(800).height(600).crop("limit")));
Realizando upload()
26. Links
• JamDroidFirechat GitHub: github.com/ygorcesar/JamDroidFireChat
• Google Play: Link App na Google Play
• Firebase: https://www.firebase.com
• Firebase Docs: https://www.firebase.com/docs
• Cloudinary: http://cloudinary.com
• Cloudinary Github: Link Github Cloudinary