criando apps sociais em android
DESCRIPTION
Apresentado durante o #tasafoemacao #mobile no Pólo de Ciência e Tecnologia Guamá, no dia 27 de Março.TRANSCRIPT
Criando Apps Sociais
em Android
@androidnarede@ramonrabello
quinta-feira, 28 de março de 13
Mas antes, “um pouco” de Android...
É uma padrão móvel aberto.
Utiliza kernel linux.
desenvolvimento em Java 5+.
recursos e telas criados em XML.
promove boaspráticas e
padrões de projeto.
fortemente documentado.
IDE e SDKcompletos.
Otimizado para a máquina virtual
Dalvik.
quinta-feira, 28 de março de 13
O framework Android
Bibliotecas que fazem parte do Kernel Linux
quinta-feira, 28 de março de 13
O framework Android
Implementação em C/C++ das bibliotecas essenciais da
plataforma e para a máquina virtual Dalvik
quinta-feira, 28 de março de 13
O framework Android
Serviços que a plataforma disponibiliza, por meio de gerenciadores para não ser
necessário “reinventar a roda”
quinta-feira, 28 de março de 13
O framework Android
Aplicativos desenvolvidos em Android
quinta-feira, 28 de março de 13
Quase todo mundo hoje em dia tem uma rede social (Twitter, Facebook, Google+)
As redes sociais são uma das melhores formas de compartilhar informações
Se sua app tiver integrada com rede social, o alcance será muito maior
Por que socializar sua app?
quinta-feira, 28 de março de 13
Sua app precisa ser integrada com alguma API de rede social
Utilizar as Intents Implícitas para que o usuário possa usufruir dos serviços de
compartilhamento
Dedicar uma área da sua app (ex: item da Action Bar) para compartilhamento
O que preciso para socializar uma app?
quinta-feira, 28 de março de 13
É um protocolo aberto
Permite autorização segura de forma simples e padronizada para aplicações
web, móveis e desktop
Utilizado pelas principais redes sociais: Twitter, Facebook, Google+, etc
autenticação facilitada: credenciais de acesso são informadas uma única vez por sessão
O padrão Open Authentication (OAuth)
quinta-feira, 28 de março de 13
Integrando sua app com o Facebook:
Aprendendo como integrar a sua app social com o
quinta-feira, 28 de março de 13
Acesse https://developers.facebook.com/apps e registre uma nova app.
Registrando uma app no Facebook
quinta-feira, 28 de março de 13
Preencha as informações para a sua app. Depois, Anote o App ID gerado, pois você irá utilizá-lo
futuramente na sua app.
Registrando uma app no Facebook
quinta-feira, 28 de março de 13
Baixar o e descompactar o SDK do Facebook para
Android em https://developers.facebook.com/
android/downloads/
Configurando o Facebook SDK para Android
quinta-feira, 28 de março de 13
Para que a integração funcione no emulador, será necessário ter instalado o Facebook para Android.
Ela já vem no SDK do Facebook, na pasta bin/.
Caso esteja executando a app direto no dispositivo, basta fazer download da app do Facebook para Android
em https://play.google.com/store/apps/details?id=com.facebook.katana.
Baixar o e descompactar o SDK do Facebook para Android em https://
developers.facebook.com/android/.
Configurando o Facebook SDK para Android
quinta-feira, 28 de março de 13
Agora, basta importar o facebook_sdk no Eclipse, indo em File > Import…
General > Existing Projects into Workspace e clique em Next.
Importando o Facebook SDK no Eclipse
quinta-feira, 28 de março de 13
Deixe Select root directory selecionado, clique em Browse... e navegue até a pasta raiz onde você descompactou o Facebook
SDK.
Você deve visualizar um novo projeto na lista, com o nome
FacebookSDK.
Clique em Finish para concluir a importação do Facebook SDK
dentro do Eclipse.
Importando o Facebook SDK no Eclipse
quinta-feira, 28 de março de 13
Crie um novo projeto Android, em File > New > Project… > Android
Application Project.
Configure o seu projeto com as informações necessárias e, para
concluir, clique em Finish.
Criando um projeto novo em Android
quinta-feira, 28 de março de 13
Adicione o pacote e o nome (ambos totalmente qualificado) de sua Activity e habilite Facebook
login.
Volte para o App Dashboard na página do Facebook Developers.
Para gerar o Key Hash, utilize esse comando no console:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
| openssl sha1 -binary | openssl base64
Registrando o pacote da Activity no Facebook
quinta-feira, 28 de março de 13
No Eclipse, selecione o projeto > File > Properties.
Na tela de propriedades, do lado esquerdo, selecione Android.
Depois, na seção Library, na parte inferior direita, clique em
Add… e selecione FacebookSDK.
Vinculando o Facebook SDK no projeto
quinta-feira, 28 de março de 13
Para configurar a App ID, abra o arquivo strings.xml na pasta res/
values.
Adicione a string app_id, com o App ID obtido durante o registro
de sua app no Facebook.
Se você abrir o arquivo strings.xml, como texto (aba
strings.xml), você deve ver isso:
<string name="app_id">497906953566757</string>
Configurando a App ID no seu projeto
quinta-feira, 28 de março de 13
Em seguida, abra o arquivo AndroidManifest.xml e adicione a permissão
android.permission.INTERNET, para que sua app possa
acessar a internet.
Configurando a App ID no seu projeto
quinta-feira, 28 de março de 13
Ainda no mesmo arquivo, adicione a tag <meta-data> com
o nome com.facebook.sdk.ApplicationId
e o conteúdo com a app_id no arquivo strings.xml
Configurando a App ID no seu projeto
quinta-feira, 28 de março de 13
Para finalizar, adicione uma nova <activity>, com o nome com.facebook.LoginActivity.
Pronto! Se você perceber, seu arquivo manifesto terá essas três linhas adicionais:
<uses-permission android:name="android.permission.INTERNET"/><meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/><activity android:name="com.facebook.LoginActivity">
Configurando a App ID no seu projeto
quinta-feira, 28 de março de 13
Primeiro, vamos criar nossa classe de serviço que irá comunicar com a API do Facebook.
Depois disso, declaramos um objeto com.facebook.Session, que representará a
sessão do usuário.
Comunicando com a API do Facebook
public class FacebookServico {
private Session sessao;
}
quinta-feira, 28 de março de 13
Depois disso, declaramos uma referência para Activity, para podermos repassar para o objeto
Session, via construtor.
public class FacebookServico { private Activity activity; private Session sessao;
public FacebookServico(Activity activity){ this.activity = activity; }}
Comunicando com a API do Facebook
quinta-feira, 28 de março de 13
Agora, instanciamos o objeto Session, passando a referência para o contexto da
aplicação, no caso, a Activity.
public class FacebookServico { private Activity activity; private Session sessao;
public FacebookServico(Activity activity){ this.activity = activity; sessao = Session.openActiveSession(activity,true,callback); }}
Comunicando com a API do Facebook
quinta-feira, 28 de março de 13
Agora, utilizamos o objeto UiLifecycleHelper, um ajudante que auxilia na gerência da sessão,
similar ao ciclo de vida public class FacebookServico { private Activity activity; private Session sessao; private UiLifecycleHelper uiHelper;
// construtor omitido
public UiLifecycleHelper getUiHelper(){ return uiHelper; }
public Session getSessao(){ return sessao; }}
Comunicando com a API do Facebook
quinta-feira, 28 de março de 13
public class FacebookServico {
// variaveis e métodos private void monitorarStatusDaSessao(Session session, SessionState state, Exception exception) { if (state.isOpened()) { Log.d("FacebookService", "Logado no Facebook"); } else if (state.isClosed()) { Log.d("FacebookService", "Saiu do Facebook"); } }}
Comunicando com a API do Facebook
Agora criamos um método auxiliar que será chamado, toda vez que houver mudança de status na sessão do usuário (ex: quando ele
entrar e sair da sessão)
quinta-feira, 28 de março de 13
public class FacebookServico {
// variaveis e métodos private void monitorarStatusDaSessao(Session session, SessionState state, Exception exception) {
Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override public void onCompleted(GraphUser user, Response response) { // se houver sessão ativa if (sessao == Session.getActiveSession()) { if (user != null) { imagemPerfil.setProfileId(user.getId()); textoSocialNome.setText(user.getName()); textoSocialUrl.setText(user.getLink()); } } if (response.getError() != null) { // Handle errors, will do so later. } } }); request.executeAsync();}
Comunicando com a API do Facebook
A classe Request, possui métodos estáticos para enviar requisições para o Facebook retornar as relações com o
perfil do usuário, como próprio perfil, amigos, lugares, etc.
quinta-feira, 28 de março de 13
Comunicando com a API do Facebook
Chamamos o método criado anteriormente, dentro do método call(), da interface
Session.StatusCallback
Session.StatusCallback callbackSessao = new Session.StatusCallback(){ @Override public void call(Session session, SessionState state, Exception exception) { monitorarStatusDaSessao(session, state, exception); } };
quinta-feira, 28 de março de 13
Para publicar no seu mural, devemos executar esse
seguinte código...
// package & imports
public class MainActivity extends FacebookActivity {
private void publishFeedDialog() { Bundle params = new Bundle(); params.putString("name", "Integração Facebook com Android na Rede"); params.putString("caption", "Testando a integração de redes sociais em aplicativos Android."); params.putString("description", "Torne sua app social integrando facilmente com o Facebook SDK para Android."); params.putString("link", "https://developers.facebook.com/android"); params.putString("picture", "https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png");
WebDialog feedDialog = ( new WebDialog.FeedDialogBuilder(getActivity(), Session.getActiveSession(), params)) .setOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(Bundle values, FacebookException error) { // When the story is posted, echo the success and the post Id. final String postId = values.getString("post_id"); if (postId != null) { Toast.makeText(getApplicationContext(), "Sua mensagem foi publicada no seu mural.", Toast.LENGTH_SHORT).show(); finish(); } } } }) .build(); feedDialog.show(); } }}
WebDialog é uma classe que representa uma tela de diálogo no Facebook (ex: postar no mural)
Assim que a ação for finalizada, o método
onComplete() é chamado.
Publicando no seu mural do Facebook
quinta-feira, 28 de março de 13
Se for a primeira vez que estiver acessando o Facebook,
será necessário logar.
Publicando no seu mural do Facebook
quinta-feira, 28 de março de 13
Depois disso, você terá que instalar a aplicação que
registrou previamente no Developer Dashboard no
Facebook.
Publicando no seu mural do Facebook
quinta-feira, 28 de março de 13
Depois, basta você preencher o que deseja publicar no seu mural e clicar
em Compartilhar (Share)
Dessa maneira, a sua app estará simplesmente integrada com o
Facebook!
Você pode conferir na sua própria linha de tempo, para ver que a mensagem foi
publicada com sucesso.
Publicando no seu mural do Facebook
quinta-feira, 28 de março de 13
Quer saber mais como criar apps sociais?
http://goo.gl/srT0x
quinta-feira, 28 de março de 13
Obrigado!
@androidnarede
facebook.com/androidnarede
https://plus.google.com/u/0/b/108790256666272382470/108790256666272382470/
tasafo.org@tasafo
quinta-feira, 28 de março de 13