Jump to content

Recommended Posts

Posted (edited)

Boas,

Estou a desenvolver uma aplicação em Xamarin (iOS) e estou com um problema relativamente ao tempo de vida da aplicação.

Necessito que a aplicação que estou a desenvolver, corra no dispositivo durante vários dias (por exemplo 3, 4 ou mais).

O problema está, no facto do utilizador executar outras aplicações no dispositivo, fazendo com que quando o mesmo, fica com pouca memória, vai matar aplicações, que estão a correr, de modo a iniciar as novas.

Já consegui solucionar esta problema no Android, através dos serviços, e das sugestões disponibilizadas pelos utilizadores deste Fórum, que podem acompanhar no link

http://www.portugal-a-programar.pt/forums/topic/74340-correr-aplicação-interminável/

No entanto, deparei-me com a mesma situação no iOS. Dado que, o que implementei no Android, não pode ser aplicado no iOS. Isto porque, não possui serviços, os quais possa utilizar da mesma forma, que no Android.

Como tal, já tentei implementar a aplicação, como se de um GPS de trata-se (pois o iOS considera estas, como de alta prioridade), ou de uma aplicação Áudio, mas sem sucesso! Acontecendo o mesmo, a quando da pouca memória do dispositivo.

Já li em alguns tópicos que falam, que o que pretendo fazer, no iOS em colocar uma aplicação a correr interminavelmente, não é possível no iOS.

Assim sendo, gostaria de saber se alguém possui alguma outra sugestão, que possa ser útil na resolução deste problema?

Ou se o que pretendo fazer, não é possível de realizar no iOS?

Obrigado!

Edited by integer
Posted

Dou-te a mesma sugestão que te dei no outro tópico: revê o requisito. Não é um requisito normal e como utilizador de iOS não ia querer a minha aplicação a correr vários dias.

Tens o problema de não existir API para isso, no caso de iOS e pela experiência que tenho, aplicações que usem API para correr com prioridade são mais escrutinadas e não passam na validação se o que estiverem a fazer não corresponder à prioridade que pedem (background mode).

Podes criar aplicações que peçam execução em background, num dos modos suportados (vê a lista na documentação da Apple), os dois modos que podiam ser usados (de memória) devem ser o de voip e de external-accessory, mas se a tua aplicação não é uma aplicação de VOIP ou não comunica com dispositivos externos então a APP não vai ser aprovada. Além disso, a tua aplicação não fica sempre a correr, o que o iOS faz é ativar a aplicação e passar-lhe os dados para que ela comece a trabalhar em background. E o utilizador pode desactivar o processamento em background para a tua aplicação (se usares um dos modos controláveis)... e quando a bateria chegar aos 20% e o dispositivo entrar em modo de poupança nem esse tipo prioridades te safa.

Há alguns truques, como usar notificações locais, mas isto depende do objetivo que tens e as notificações avisam o utilizador, sendo que a tua APP apenas executa quando ele clicar na notificação... para aplicações que não são distribuídas na APP Store é possível mascarar a APP como executando um dos modos de background prioritários mas se tentares submeter para a APP Store é muito fácil chumbar, ou passar numa primeira vez (difícil) e ser bloqueada num update.

Resumindo: Não tens como fazer isso em iOS.

  • Vote 2
Posted

Bom dia,

em iOS isso é bastante complicado, por diversas razões sendo a principal a forma como o iOS funciona. Eventualmente detectar o estado suspended, e mover de novo a app para background, poderá ser um caminho. Mas é só uma ideia "peregrina".

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.