Parse
Parse Data     Parse Push




Parse Social   Cloud Code
iOS          OS X      Android   Javascript




Windows Phone   Windows 8    .NET     Rest API
Parse Data
criando uma nova classe
criando uma nova classe
criando uma nova classe
criando um novo objeto

ParseObject profile = new ParseObject("Profile");
profile.put("age", 45);
profile.put("name", "John Doe");
profile.saveInBackground();
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();
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");
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();
api requests
Parse Push
interface código
        ou
via interface
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);
via código

ParsePush push = new ParsePush();
push.setChannel("Giants");
push.setMessage("Touchdown para os Giants! O time vira contra os Mets.");
push.sendInBackground();
pushs enviados
Parse Social
SSO   vs   Link
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);
}
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
twitter connect

ParseTwitterUtils.initialize("CONSUMER KEY", "CONSUMER SECRET");
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
Cloud Code
command line tool

$ curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash




$ parse new LightningTalkCloudCode
Email: gustavocsb@gmail.com
Password:
1:Foliao
2:Lightning Talk
Select an App: 2
$ cd LightningTalkCloudCode
cloud/main.js

Parse.Cloud.define("hello", function(request, response) {
  response.success("Hello world!");
});
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!"
}
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");
    }
  });
});
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();
  }
});
logging

Parse.Cloud.define("Logger", function(request, response) {
  console.log(request.params);
  response.success();
});
networking

Parse.Cloud.httpRequest({
  method: 'GET’,
  url: 'http://www.parse.com/',
  success: function(httpResponse) {
    console.log(httpResponse.text);
  },
  error: function(httpResponse) {
    console.error('Request failed with response code ' + httpResponse.status);
  }
});
cloud modules
obrigado,
Gustavo Barbosa

  gustavo.barbosa@quatix.com.br

  facebook.com/gustavocsb

  twitter.com/gustavocsb

  github.com/barbosa

Parse

  • 1.
  • 3.
    Parse Data Parse Push Parse Social Cloud Code
  • 4.
    iOS OS X Android Javascript Windows Phone Windows 8 .NET Rest API
  • 6.
  • 8.
  • 9.
  • 10.
  • 11.
    criando um novoobjeto 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 ParseObjectprofile = 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();
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    adicionando a umcanal de envio // Salva a instalação no Parse. ParseInstallation.getCurrentInstallation().saveInBackground(); // Adiciona o usuário no canal “Giants”. PushService.subscribe(context, "Giants", YourActivity.class);
  • 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();
  • 22.
  • 23.
  • 25.
    SSO vs Link
  • 26.
    facebook connect ParseFacebookUtils.initialize("ID DAAPP 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
  • 28.
  • 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
  • 30.
  • 32.
    command line tool $curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash $ parse new LightningTalkCloudCode Email: gustavocsb@gmail.com Password: 1:Foliao 2:Lightning Talk Select an App: 2 $ cd LightningTalkCloudCode
  • 33.
  • 34.
    deploy $ parse deploy Newrelease 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();   } });
  • 37.
    logging Parse.Cloud.define("Logger", function(request, response){   console.log(request.params);   response.success(); });
  • 38.
    networking Parse.Cloud.httpRequest({ method:'GET’,   url: 'http://www.parse.com/',   success: function(httpResponse) {     console.log(httpResponse.text);   },   error: function(httpResponse) {     console.error('Request failed with response code ' + httpResponse.status);   } });
  • 39.
  • 40.
    obrigado, Gustavo Barbosa gustavo.barbosa@quatix.com.br facebook.com/gustavocsb twitter.com/gustavocsb github.com/barbosa