Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Globalcode – Open4education
Aprendendo a usar Xamarin para desenvolver
aplicações moveis multi plataforma
Rodrigo Urubatan...
Globalcode – Open4education
Rodrigo Urubatan
F. Jardim
• http://urubatan.com.br
• http://github.com/urubatan
• http://twit...
Globalcode – Open4education
Meu problema
Distribuição de noticias
para clients por email
Difícil de ter certeza de
quem le...
Globalcode – Open4education
Globalcode – Open4education
Um código
para todas as
plataformas!!!
Globalcode – Open4education
Xamarin não é perfeito
Globalcode – Open4education
Xamarin.Forms
Globalcode – Open4education
Ok, mas
vai ficar
só
falando?
Globalcode – Open4education
RestClient
this.client = new
RestClient("http://address:port/");
Globalcode – Open4education
Login?
public async Task<User> RestLogin(string Username, string Password)
{
try
{
var request...
Globalcode – Open4education
Mas não
funcionou!!
Todas as
requisições REST
são por definição
stateless
O protocolo HTTP
tem...
Globalcode – Open4education
Adicionando suporte a
Cookies ao nosso RestClient
this.client = new
RestClient("http://reader....
Globalcode – Open4education
Mapeando Objetos
public class Article
{
public string Headline { get; set; }
public string Bod...
Globalcode – Open4education
Mostrando Dados
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
xmlns="http://xamarin.com...
Globalcode – Open4education
Ainda não
funciona?
protect_from_forgery é um
problema, Podemos fazer uma
requisição e enviar ...
Globalcode – Open4education
Mostrando
detalhes!
MainPage = new NavigationPage(new
tdc2017poa_xam.MainPage(this.clientAp
i)...
Globalcode – Open4education
Pontos importantes!!
Device.BeginInvokeOnMainThread
Task.Factory.StartNew
async/await
Applicat...
Globalcode – Open4education
Notificações? Microsoft.Azure.Mobile.Client
Globalcode – Open4education
E agora?
Globalcode – Open4education
Nächste SlideShare
Wird geladen in …5
×

TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis multi plataforma

70 Aufrufe

Veröffentlicht am

Estes são os slides da minha palestra no The Developers Conference Porto Alegre deste ano, onde falei um pouco sobre desenvolvimento de aplicações multi plataforma com Xamarin, problemas e vantagens que encontrei no primeiro projeto que fiz com a plataforma, por que escolhi esta plataforma, alguns exemplos de código, ...
os exemplos completos do código Xamarin e do servidor Rails estão no meu github (tem o link nos slides)

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis multi plataforma

  1. 1. Globalcode – Open4education Aprendendo a usar Xamarin para desenvolver aplicações moveis multi plataforma Rodrigo Urubatan http://www.urubatan.com.br - @urubatan – rodrigo@urubatan.com.br
  2. 2. Globalcode – Open4education Rodrigo Urubatan F. Jardim • http://urubatan.com.br • http://github.com/urubatan • http://twitter.com/urubatan • http://linkedin.com/in/urubatan • rodrigo@urubatan.com.br
  3. 3. Globalcode – Open4education Meu problema Distribuição de noticias para clients por email Difícil de ter certeza de quem leu cada notícia Difícil de agregar mais valor a cada noticia entregue Difícil de traçar o perfil dos clients, tempo de leitura por assunto, … Os clientes usam plataformas diferentes, e desenvolvimento mobile não é o foco principal da empresa
  4. 4. Globalcode – Open4education
  5. 5. Globalcode – Open4education Um código para todas as plataformas!!!
  6. 6. Globalcode – Open4education Xamarin não é perfeito
  7. 7. Globalcode – Open4education Xamarin.Forms
  8. 8. Globalcode – Open4education Ok, mas vai ficar só falando?
  9. 9. Globalcode – Open4education RestClient this.client = new RestClient("http://address:port/");
  10. 10. Globalcode – Open4education Login? public async Task<User> RestLogin(string Username, string Password) { try { var request = new RestRequest("sessions.json", Method.POST); request.AddJsonBody(new { session = new { username = Username, password = Password } }); var response = await client.Execute(request); if (response.IsSuccess) { Application.Current.Properties["Password"] = Password; Application.Current.Properties["Username"] = Username; Application.Current.Properties["LoggedIn"] = "True"; await Application.Current.SavePropertiesAsync(); request = new RestRequest("sessions.json", Method.GET); var response2 = await client.Execute<User>(request); if (response2.IsSuccess) { var user = response2.Data; return user; }else{ return null; } } else { return null; } } catch (Exception) { return null; } }
  11. 11. Globalcode – Open4education Mas não funcionou!! Todas as requisições REST são por definição stateless O protocolo HTTP tem um “contorno” para isto, com “Cookies” As plataformas WEB usam estes cookies para manter o estado entre as requisições
  12. 12. Globalcode – Open4education Adicionando suporte a Cookies ao nosso RestClient this.client = new RestClient("http://reader.brightwire.com/"); var cookieContainer = new System.Net.CookieContainer(); client.CookieContainer = cookieContainer;
  13. 13. Globalcode – Open4education Mapeando Objetos public class Article { public string Headline { get; set; } public string Body { get; set; } } public async Task<Article> ListArticles() { var request = new RestRequest("articles.json", Method.GET); var resp = await client.Execute<Article>(request); var storyList = resp.Data; return storyList; }
  14. 14. Globalcode – Open4education Mostrando Dados <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml " xmlns:local="clr- namespace:tdc2017poa_xam" x:Class="tdc2017poa_xam.MainPage"> <ContentPage.Content> <StackLayout> <Label Text="Stories List" VerticalOptions="Start" HorizontalOptions="CenterAndExpand" /> <ListView x:Name="ArticlesList"> <ListView.ItemTemplate> <DataTemplate> <TextCell Text="{Binding Headline}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackLayout> </ContentPage.Content> </ContentPage> namespace tdc2017poa_xam { public partial class MainPage : ContentPage { private ReaderRestAPI clientApi; public MainPage(ReaderRestAPI clientApi) { this.clientApi = clientApi; InitializeComponent(); Task.Factory.StartNew(async () => { var articles = await clientApi.ListArticles(); Device.BeginInvokeOnMainThread(() => { this.ArticlesList.ItemsSource = articles; }); }); } } }
  15. 15. Globalcode – Open4education Ainda não funciona? protect_from_forgery é um problema, Podemos fazer uma requisição e enviar o cabeçalho, ou simplesmente desligar isto para o exemplo
  16. 16. Globalcode – Open4education Mostrando detalhes! MainPage = new NavigationPage(new tdc2017poa_xam.MainPage(this.clientAp i)); Navigation.PushAsync(new ArticlePage(this.clientApi, (e.SelectedItem as Article).Id));
  17. 17. Globalcode – Open4education Pontos importantes!! Device.BeginInvokeOnMainThread Task.Factory.StartNew async/await Application.Current.Properties/Application.Current. SavePropertiesAsync/Application.Current.Propertie s.ContainsKey
  18. 18. Globalcode – Open4education Notificações? Microsoft.Azure.Mobile.Client
  19. 19. Globalcode – Open4education E agora?
  20. 20. Globalcode – Open4education

×