Parse é um PaaS (platform as a service) que foi criado para auxiliar desenvolvedores a criarem seus aplicativos sem a necessidade de criar um web service para gerenciamento dos dados. Através de sua API, é possível gerenciar dados através de um banco com interface visual (Parse Data), configurar o envio de push notifications (Parse Push), integrar contas de redes sociais (Parse Social) e ainda escrever código para customização e tratamento de seus dados na nuvem (Cloud Code).
Parse is a PaaS (platform as a service) which was created to support developers to build their mobile apps without a web service managing the data. Through its API, it is possible to manage data through a database using a visual interface (Parse Data), configure push notifications (Parse Push), integrate social networks accounts (Parse Social) and write code to customize your requests in the cloud (Cloud Code).
11. criando um novo objeto
ParseObject profile = new ParseObject("Profile");
profile.put("age", 45);
profile.put("name", "John Doe");
profile.saveInBackground();
12. objetos com relacionamento
// Cria um post
ParseObject myPost = new ParseObject("Post");
myPost.put("title", "Estou com fome!");
myPost.put("content", "Vamos almoçar aonde?");
// Cria um comentário
ParseObject myComment = new ParseObject("Comment");
myComment.put("content", "Vamos no Estação.");
myComment.put("parent", myPost);
myComment.saveInBackground();
13. buscando objetos
ParseQuery query = new ParseQuery("Profile");
query.whereEqualTo("age", 45);
query.findInBackground(new FindCallback() {
public void done(List<ParseObject> profileList, ParseException e) {
if (e == null) {
Log.d("profile", "Retrieved " + profileList.size() + " profiles");
} else {
Log.d("profile", "Error: " + e.getMessage());
}
}
});
int age = profile.getInt("age");
String name = profile.getString("name");
14. outras funções úteis
ParseObject profile = new ParseObject("Profile");
profile.put("age", 27);
profile.put("name", "Mary Moe");
er!
profile.saveEventually(); o pud
quand
Salve
profile.increment("age");
profile.saveInBackground();
profile.deleteInBackground();
profile.remove("name");
profile.saveInBackground();
19. adicionando a um canal de envio
// Salva a instalação no Parse.
ParseInstallation.getCurrentInstallation().saveInBackground();
// Adiciona o usuário no canal “Giants”.
PushService.subscribe(context, "Giants", YourActivity.class);
20.
21. via código
ParsePush push = new ParsePush();
push.setChannel("Giants");
push.setMessage("Touchdown para os Giants! O time vira contra os Mets.");
push.sendInBackground();
26. facebook connect
ParseFacebookUtils.initialize("ID DA APP DO FACEBOOK");
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
}
27. ParseFacebookUtils.logIn(this, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if (user == null) {
Log.d("MeuApp", "Ops. O usuário cancelou o login do Facebook.");
} else if (user.isNew()) {
Log.d("MeuApp", "Usuário criado e logado via Facebook!");
} else {
Log.d("MeuApp", "Usuário logado via Facebook!");
}
}
}); SSO
if (!ParseFacebookUtils.isLinked(user)) {
ParseFacebookUtils.link(user, this, new SaveCallback() {
@Override
public void done(ParseException ex) {
if (ParseFacebookUtils.isLinked(user)) {
Log.d("MeuApp", "Boa! Usuário conectou sua conta do Facebook!");
}
}
});
} LINK
29. ParseTwitterUtils.logIn(this, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if (user == null) {
Log.d("MeuApp", "Ops. O usuário cancelou o login do Twitter.");
} else if (user.isNew()) {
Log.d("MeuApp", "Usuário criado e logado via Twitter!");
} else {
Log.d("MeuApp", "Usuário logado via Twitter!");
}
}
}); SSO
if (!ParseTwitterUtils.isLinked(user)) {
ParseTwitterUtils.link(user, this, new SaveCallback() {
@Override
public void done(ParseException ex) {
if (ParseTwitterUtils.isLinked(user)) {
Log.d("MeuApp", "Boa! Usuário conectou sua conta do Twitter!");
}
}
});
} LINK
34. deploy
$ parse deploy
New release is named v1
$ curl -X POST
-H "X-Parse-Application-Id: <INSERIR PARSE APP ID>"
-H "X-Parse-REST-API-Key: <INSERIR PARSE REST API KEY>"
-H "Content-Type: application/json"
-d '{}'
https://api.parse.com/1/functions/hello
{
"result": "Hello world!"
}
35. cloud functions
Parse.Cloud.define("averageStars", function(request, response) {
var query = new Parse.Query("Review");
query.equalTo("movie", request.params.movie);
query.find({
success: function(results) {
var sum = 0;
for (var i = 0; i < results.length; ++i) {
sum += results[i].get("stars");
}
response.success(sum / results.length);
},
error: function() {
response.error("movie lookup failed");
}
});
});
36. cloud functions - validations
Parse.Cloud.beforeSave("Review", function(request, response) {
if (request.object.get("stars") < 1) {
response.error("you cannot give less than one star");
} else if (request.object.get("stars") > 5) {
response.error("you cannot give more than five stars");
} else {
response.success();
}
});