SlideShare uma empresa Scribd logo
1 de 39
Globalcode – Open4education
Trilha – Universal Windows
Diego Castro | João Ronaldo
Evangelistas Técnicos
www.talkitbr.com
Globalcode – Open4education
Diego Castro
/dfdcastro
www.talkitbr.com
/talkitbr
João Ronaldo Cunha
/joaoronaldo.cunha
www.talkitbr.com
/talkitbr /joaocunhaeld
Globalcode – Open4education
Agenda
Live Tiles
Tiles
Tile Templates
Secondary Tiles
Adaptive Tile
Demo
Background Execution
Criando Background Tasks
Globalcode – Open4education
Tiles
Globalcode – Open4education
Live State
Plate
App Icon
Short Name
Badge
Content
Plate
Short Name
Badge
App Icon
Content
Anatomia
Semi-Live State
Plate
App Logo
Short Name
Badge
Plate
App Logo
Short Name
Badge
Basic State
Plate
App Logo
Short Name
Plate
App Logo
Short Name
Globalcode – Open4education
Atualizando
Programado
Configurar com “ScheduledTileNotification”
Periódico
Pull URL 30m / 60m / 6h / 12h / 24h
Local
Update em foreground/background
Push
Push services
Globalcode – Open4education
Responsive Tiles
Tiles não são sempre dos
mesmos tamanhos
Se adaptam de acordo
com a densidade do
dispositivo
Alta densidadeBaixa densidade
Globalcode – Open4education
Tile Templates
Globalcode – Open4education
Basic Templates
Globalcode – Open4education
Templates Legados
O template que você precisa já
existe?
Templates anteriores ainda
são válidos!
Globalcode – Open4education
Secondary Tiles
Globalcode – Open4education
O que é
Deep-link no seu app
Separação de conteúdo
Conteúdo relevante para o
usuário
Globalcode – Open4education
Adaptive Tile
Globalcode – Open4education
XML
<tile>
<visual>
<binding template="TileSmall">
<text>Small</text>
</binding>
<binding template="TileMedium">
<text>Medium</text>
</binding>
<binding template="TileWide">
<text>Wide</text>
</binding>
<binding template="TileLarge">
<text>Large</text>
</binding>
</visual>
</tile>
Globalcode – Open4education
O que podemos fazer
Globalcode – Open4education
Demo
Globalcode – Open4education
Background Tasks
Globalcode – Open4education
O que é
Tarefa que executa em plano de fundo
(background)
Permite executar código da aplicação mesmo
quando ela não estiver em execução.
Usado para:
Atualização de Live Tiles;
Notificações;
Atualização de banco de dados;
Entre outros.
Globalcode – Open4education
Criando Background Task
Analisar custo
O SO está sobrecarregado? Vale a pena executar o
background task num determinado momento?
Tratar o cancelamento da task
Toda background task pode ser cancelada
Executar em deferral
Background task não pode executar de forma
assíncrona.
Indicar progresso
Globalcode – Open4education
Criando Background Task
public async void Run(IBackgroundTaskInstance taskInstance)
{
var cost = BackgroundWorkCost.CurrentBackgroundWorkCost;
if (cost == BackgroundWorkCostValue.High)
{
return;
}
var cancel = new System.Threading.CancellationTokenSource();
taskInstance.Canceled += (s, e) =>
{
cancel.Cancel();
cancel.Dispose();
};
var deferral = taskInstance.GetDeferral();
try
{
await Task.Run(async () =>
{
for (int i = 0; i < 10; i++)
{
taskInstance.Progress = (uint)i * 10;
await Task.Delay(2000);
}
}, cancel.Token);
}
finally
{
deferral.Complete();
}
}
Analisar Custo
Globalcode – Open4education
Criando Background Task
public async void Run(IBackgroundTaskInstance taskInstance)
{
var cost = BackgroundWorkCost.CurrentBackgroundWorkCost;
if (cost == BackgroundWorkCostValue.High)
{
return;
}
var cancel = new System.Threading.CancellationTokenSource();
taskInstance.Canceled += (s, e) =>
{
cancel.Cancel();
cancel.Dispose();
};
var deferral = taskInstance.GetDeferral();
try
{
await Task.Run(async () =>
{
for (int i = 0; i < 10; i++)
{
taskInstance.Progress = (uint)i * 10;
await Task.Delay(2000);
}
}, cancel.Token);
}
finally
{
deferral.Complete();
}
}
Tratar cancelamento
Globalcode – Open4education
Criando Background Task
public async void Run(IBackgroundTaskInstance taskInstance)
{
var cost = BackgroundWorkCost.CurrentBackgroundWorkCost;
if (cost == BackgroundWorkCostValue.High)
{
return;
}
var cancel = new System.Threading.CancellationTokenSource();
taskInstance.Canceled += (s, e) =>
{
cancel.Cancel();
cancel.Dispose();
};
var deferral = taskInstance.GetDeferral();
try
{
await Task.Run(async () =>
{
for (int i = 0; i < 10; i++)
{
taskInstance.Progress = (uint)i * 10;
await Task.Delay(2000);
}
}, cancel.Token);
}
finally
{
deferral.Complete();
}
}
Executar em deferral
Globalcode – Open4education
Criando Background Task
public async void Run(IBackgroundTaskInstance taskInstance)
{
var cost = BackgroundWorkCost.CurrentBackgroundWorkCost;
if (cost == BackgroundWorkCostValue.High)
{
return;
}
var cancel = new System.Threading.CancellationTokenSource();
taskInstance.Canceled += (s, e) =>
{
cancel.Cancel();
cancel.Dispose();
};
var deferral = taskInstance.GetDeferral();
try
{
await Task.Run(async () =>
{
for (int i = 0; i < 10; i++)
{
taskInstance.Progress = (uint)i * 10;
await Task.Delay(2000);
}
}, cancel.Token);
}
finally
{
deferral.Complete();
}
}
Indicar progresso
Globalcode – Open4education
Criando Background Task
No Windows 10 uma aplicação pode ter muitas
background tasks.
Seja consciente! Executar várias background tasks
pode prejudicar a experiência do usuário.
Globalcode – Open4education
Requisitando Acesso
A aplicação precisa requisitar acesso para rodar
Background Tasks
O Windows 10 não exibe mais a caixa de diálogo,
assim como já era no Windows Phone 8.1.
BackgroundAccessStatus allowed = await BackgroundExecutionManager.RequestAccessAsync();
switch (allowed)
{
// allowed
case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity: break;
case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity: break;
// denied
case BackgroundAccessStatus.Denied: break;
// cancelled
case BackgroundAccessStatus.Unspecified: break;
}
Globalcode – Open4education
Registrando
Registramos a Background Task usando o
BackgroundExecutionManager.
Neste momento definimos o trigger e as condições
para rodar a background task.
var task = new BackgroundTaskBuilder
{
Name = nameof(MyBackgroundTask),
CancelOnConditionLoss = false,
TaskEntryPoint = typeof(MyBackgroundTask).ToString(),
};
task.SetTrigger(new SystemTrigger(SystemTriggerType.InternetAvailable, false));
task.AddCondition(new SystemCondition(SystemConditionType.userPresent));
task.Register();
Globalcode – Open4education
Especificando no manifest
No manifest da aplicação registramos uma
extensão da aplicação definindo nossa Task.
Atenção para os tipos definidos para o Background
Task.
<Applications>
<Application Id="App"
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="SampleApp.Tasks.MyBackgroundTask">
<BackgroundTasks>
<Task Type="systemEvent" />
<!-- <Task Type="timer" /> -->
</BackgroundTasks>
</Extension>
</Extensions>
</Application>
</Applications>
Globalcode – Open4education
Demo
Globalcode – Open4education
Executando a Task
A execução de um Background Task é
determinada:
Por trigger.
Por zero ou mais condições.
Posso registrar uma task com diferentes triggers e
diferentes condições.
Globalcode – Open4education
Windows8.1
SystemTrigger
TimeTrigger
MaintenanceTrigger
DeviceUseTrigger
DeviceServicingTrigger
PushNotificationTrigger
Phone8.1
CachedFileUpdaterTrigger
DeviceConnectionChangeTrigger
GattCharacteristicNotificationTrigger
RfcommConnectionTrigger
LocationTrigger
Windows10
AppointmentStoreNotificationTrigger
ContactStoreNotificationTrigger
EmailStoreNotificationTrigger
BluetoothLEAdvertisementWatcherTrigger
BluetoothLEAdvertisementPublisherTrigger
DeviceWatcherTrigger
ActivitySensorTrigger
SensorDataThresholdTrigger
ToastNotificationHistoryChangedTrigger
ToastNotificationActionTrigger
ApplicationTrigger
MediaProcessingTrigger
SocketActivityTrigger
Executando a Task
Triggers
Globalcode – Open4education
Executando a Task
Triggers -Time Trigger
Time Trigger deve ter ao menos 15 minutos para
ser recorrente.
Definir trigger menor faz com que ele seja
executado somente uma vez.
// ...
task.SetTrigger(new TimeTrigger(15, false));
task.AddCondition(new SystemCondition(SystemConditionType.UserPresent));
task.Register();
// ...
Globalcode – Open4education
Executando a Task
Condições do Sistema
User Present
User Not Present
Internet Available
Internet Not Available
Session Connected
Session Disconnected
Free Network Available
Se a rede não tem taxa
para tráfego de dados
Work Cost Not High
Globalcode – Open4education
Tempo Execução da Task
Cancel
(5 seconds)
Memory
Run
(25 seconds)
Default tasks
Mínimo 25 segundos de
execução
5 segundos após receber
sinal de cancelamento.
Memory
Run
(no end)
End
(no warning, for now)
Long-running tasks
Inclui triggers: Application,
Maintenance e DeviceUse
Globalcode – Open4education
Restrições
Quiet hours
Somente quando não estiver sendo usado pelo usuário.
Não são emitidas notificações
Nenhuma background task é executada
Tarefas em andamento são canceladas
Globalcode – Open4education
Restrições
Economia de Bateria
Usuários definem as aplicações que podem executar em
Background
Número de tasks controlado
Identifica tasks abusivas
Globalcode – Open4education
Debug e Log
Visual Studio pode disparar background tasks.
Log é registrado em:
Application & Services Logs > Microsoft >
BackgroundTaskInfrastructure
Globalcode – Open4education
Dúvidas?
Globalcode – Open4education
Contatos
/dfdcastro
www.talkitbr.com
/joaoronaldo.cunha
/talkitbr
/talkitbr
Globalcode – Open4education
Obrigado!

Mais conteúdo relacionado

Mais procurados

TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)Augusto Pascutti
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com gitHumberto Streb
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
 
Web2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com PythonWeb2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com Pythonchackero
 
Notificações no iOS 10
Notificações no iOS 10Notificações no iOS 10
Notificações no iOS 10Rodrigo Borges
 
Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoLeonardo Borges
 
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...tdc-globalcode
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoRicardo Longa
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaEmmanuel Neri
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonRicardo Longa
 
Aula 05/06 (Service)
Aula 05/06 (Service)Aula 05/06 (Service)
Aula 05/06 (Service)Ricardo Longa
 
Hash Endereçamento Quadrático Operações
Hash Endereçamento Quadrático OperaçõesHash Endereçamento Quadrático Operações
Hash Endereçamento Quadrático OperaçõesElaine Cecília Gatto
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 

Mais procurados (20)

Vraptor
VraptorVraptor
Vraptor
 
TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)
 
Nossa experiência com TDD
Nossa experiência com TDDNossa experiência com TDD
Nossa experiência com TDD
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com git
 
Conciex 2012
Conciex 2012Conciex 2012
Conciex 2012
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento android
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Web2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com PythonWeb2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com Python
 
Notificações no iOS 10
Notificações no iOS 10Notificações no iOS 10
Notificações no iOS 10
 
Programação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncronoProgramação functional reativa: lidando com código assíncrono
Programação functional reativa: lidando com código assíncrono
 
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
 
Trabalhando com as views do Web2Py
Trabalhando com as views do Web2PyTrabalhando com as views do Web2Py
Trabalhando com as views do Web2Py
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenho
 
Threads e Estruturas de dados
Threads e Estruturas de dadosThreads e Estruturas de dados
Threads e Estruturas de dados
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações Java
 
Programa final
Programa finalPrograma final
Programa final
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
 
Aula 05/06 (Service)
Aula 05/06 (Service)Aula 05/06 (Service)
Aula 05/06 (Service)
 
Hash Endereçamento Quadrático Operações
Hash Endereçamento Quadrático OperaçõesHash Endereçamento Quadrático Operações
Hash Endereçamento Quadrático Operações
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 

Semelhante a Tiles e Background Tasks no UWP

TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanElton Minetto
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
Implementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRCImplementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRCJosé Travado
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de RefactoringRodrigo Branas
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em AndroidPedro Veloso
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Rodrigo Rocha
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaJoselito Nascimento
 
P1
P1P1
P1csmp
 

Semelhante a Tiles e Background Tasks no UWP (20)

TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Python Para Maemo
Python Para MaemoPython Para Maemo
Python Para Maemo
 
Apresentação Phonegap
Apresentação PhonegapApresentação Phonegap
Apresentação Phonegap
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Implementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRCImplementação em ActionScript 3 do Protocolo IRC
Implementação em ActionScript 3 do Protocolo IRC
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Técnicas de Refactoring
Técnicas de RefactoringTécnicas de Refactoring
Técnicas de Refactoring
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Android
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
P1
P1P1
P1
 

Mais de Diego Castro

Xamarin in-app purchases
Xamarin in-app purchasesXamarin in-app purchases
Xamarin in-app purchasesDiego Castro
 
Microsoft Bot Framework + Cognitive Services
Microsoft Bot Framework + Cognitive ServicesMicrosoft Bot Framework + Cognitive Services
Microsoft Bot Framework + Cognitive ServicesDiego Castro
 
Bibliotecas nativas em Xamarin
Bibliotecas nativas em XamarinBibliotecas nativas em Xamarin
Bibliotecas nativas em XamarinDiego Castro
 
Computação Cognitiva
Computação Cognitiva Computação Cognitiva
Computação Cognitiva Diego Castro
 
Migrando uma App Universal 8.1 para o Windows 10
Migrando uma App Universal 8.1 para o Windows 10Migrando uma App Universal 8.1 para o Windows 10
Migrando uma App Universal 8.1 para o Windows 10Diego Castro
 
Agile Development Software - Scrum
Agile Development Software - ScrumAgile Development Software - Scrum
Agile Development Software - ScrumDiego Castro
 

Mais de Diego Castro (6)

Xamarin in-app purchases
Xamarin in-app purchasesXamarin in-app purchases
Xamarin in-app purchases
 
Microsoft Bot Framework + Cognitive Services
Microsoft Bot Framework + Cognitive ServicesMicrosoft Bot Framework + Cognitive Services
Microsoft Bot Framework + Cognitive Services
 
Bibliotecas nativas em Xamarin
Bibliotecas nativas em XamarinBibliotecas nativas em Xamarin
Bibliotecas nativas em Xamarin
 
Computação Cognitiva
Computação Cognitiva Computação Cognitiva
Computação Cognitiva
 
Migrando uma App Universal 8.1 para o Windows 10
Migrando uma App Universal 8.1 para o Windows 10Migrando uma App Universal 8.1 para o Windows 10
Migrando uma App Universal 8.1 para o Windows 10
 
Agile Development Software - Scrum
Agile Development Software - ScrumAgile Development Software - Scrum
Agile Development Software - Scrum
 

Tiles e Background Tasks no UWP

Notas do Editor

  1. Apresentação Pessoal
  2. Explicar agenda, o que vamos apresentar
  3. - Explicar como é formado um Tile Explicar os 3 tipos de tiles Basic State Semi-Live State Live State
  4. - Explicar os tipos de atualizações que são possíveis
  5. Explicar que é necessário se preocupar e testar em diversos devices De acordo com o tipo de tela disponível, o Tile vai ficar diferente. Se preocupe com as informações, ela vai estar legível para o usuário?
  6. Basic Templates Templates prontos, com posições dos elementos fixas
  7. Explicar que se o template que existe funciona para ele, é melhor usar. Os templates do Windows 8.1 ainda funcionam no 10 sem nenhum problema
  8. Explicar o que é o Secondary Live Tile Explicar quando deve usar esse recurso
  9. Mostrar como é o código incial de cada tamanho de tamplate disponível Falar que o Tile Large é exclusivo Desktop
  10. Mostrar exemplos de tiles Mostrar como é simples e fácil deixar um Tile customizado de acordo com as necessidades do aplicativo
  11. Pode ser causado por falta de recursos do SO.
  12. Ao executar uma tarefa assíncrona no Background Task, o SO pode considerar a task como finalizada e teminá-la. Usar deferral garante que a Task não será finalizada pelo SO. O deferral.Complete() sinaliza o SO que a background task terminou o que tinha para fazer.
  13. Ao executar uma tarefa assíncrona no Background Task, o SO pode considerar a task como finalizada e teminá-la. Usar deferral garante que a Task não será finalizada pelo SO. O deferral.Complete() sinaliza o SO que a background task terminou o que tinha para fazer.
  14. No Windows desktop podemos ter até 8 background tasks executando simultâneamente. Isso pode ser diferente no Windows Mobile.
  15. O usuário pode prevenir a execução de um background task (app or system level). Mas ele não pode impedir que a aplicação faça a requisição de acesso. Não é esse o caso aqui. O usuário pode negar a execução de background tasks, por exemplo, devido a problemas com a aplicação ou por causa do estado atual do SO.
  16. Para registrar o Background Task usamos o método: Task.register() Para tanto definimos a Task a partir do BackgroundTaskBuilder. Neste definimos as seguintes informações: - Name: deve ser único. Podemos usar o recurso novo do C#5 que é o nameof. O nome será depois usado para acompanhar a Background Task no event viewer. - CancelOnConditionLoss: Nós podemos executar a task mesmo quando perdermos a condição para executar a background task. - EntryPoint: O nome complete do background task.
  17. E importante especificar o type correto para a tarefa. Voce pode especificar mais de um element Task dentro do element BackgroundTasks, cada um especificando os tipos que devem corresponder com os triggers da task.
  18. Em Quite Hours ainda estão disponíveis Toast VOIP e Toast Alarm
  19. Em Quite Hours ainda estão disponíveis Toast VOIP e Toast Alarm