Os aplicativos fechados (não em execução) podem acessar a atualização de aplicativos em segundo plano?

1

Os aplicativos fechados (ou seja, não em execução ou suspensos) podem acessar a atualização de aplicativos em segundo plano ou modificar o estado do programa para obter acesso à atualização de aplicativos em segundo plano? Por outro lado, se a atualização de aplicativos em segundo plano estiver desativada, os aplicativos poderão acessar apenas dados em primeiro plano?

Exemplo 1: os aplicativos de bate-papo ainda recebem notificações se estiverem no estado do programa "não em execução". Como eles fazem isso?

Exemplo 2: Se eu estiver salvando uma anotação (com a atualização do aplicativo em segundo plano desativada) e retornar à tela inicial antes que a anotação termine de ser salva, ela continuará sendo salva?

Nos documentos do iOS, o ciclo de vida do aplicativo é mostrado abaixo.

Alterações de estado em um aplicativo iOS

Guia do desenvolvedor do iOS: o ciclo de vida do aplicativo

y3sh
fonte
Você está perguntando como codificar a atualização de aplicativos em segundo plano? Os aplicativos podem atualizar eventos em segundo plano, desde que sigam as diretrizes de codificação corretas. Como fazer a codificação é off-topic para este site.
Fsb #
@fsb Não é uma questão de programação. Mas talvez eu possa obter uma resposta melhor dos programadores do iOS. Qual site seria mais apropriado?
Y3sh # 13/16
O link que você forneceu tem as respostas para suas perguntas. Se você ler a seção Execução em Segundo Plano, verá como isso é feito.
Fsb #
@fsb Como se vê, BAR! = Execução em segundo plano ... Acho que foi daí que surgiu a minha confusão.
y3sh

Respostas:

3

Não confunda Suspenso com Não em execução. Suspenso significa que o aplicativo ainda está na memória, mas não utiliza nenhum recurso. Não executando significa que o aplicativo não está na memória devido ao encerramento involuntário, porque o sistema exigia recursos para um aplicativo em primeiro plano ou porque o usuário saiu do aplicativo com força.

Atualização de aplicativo em segundo plano (BAR) = / = "Segundo plano", como mostrado nesse diagrama:

  • O BAR permite que os aplicativos atualizem o conteúdo de maneira muito limitada, em um cronograma definido e imposto pelo iOS, geralmente uma vez por dia.

  • O estado de segundo plano mostrado nesse diagrama é Execução em segundo plano, que permite que os aplicativos concluam determinadas tarefas em segundo plano. A barra desativada não afeta os aplicativos que podem usar a execução em segundo plano.

Geralmente, a execução em segundo plano é permitida apenas se um aplicativo não for forçado a sair pelo usuário (a exceção são "aplicativos de localização"). Aplicativos em qualquer estado, incluindo Terminado, podem usar a Execução em Segundo Plano se atenderem aos requisitos abaixo. Se necessário, eles serão reiniciados pelo sistema em segundo plano (novamente, sujeito às limitações de força de encerramento acima). Veja minha resposta em uma pergunta semelhante :

  • Aplicativos que reproduzem conteúdo audível para o usuário enquanto em segundo plano, como um aplicativo music player
  • Aplicativos que gravam conteúdo de áudio em segundo plano
  • Aplicativos que mantêm os usuários informados sobre sua localização o tempo todo, como um aplicativo de navegação
  • Aplicativos que suportam o protocolo Voice over Internet (VoIP)
  • Aplicativos que precisam baixar e processar novos conteúdos regularmente
  • Aplicativos que recebem atualizações regulares de acessórios externos

Há um outro caso, que está sendo baixado em segundo plano. Este é um caso especial, porém, porque o aplicativo em si ainda está suspenso e o processo de download é entregue ao sistema, caso o aplicativo precise ser finalizado pelo sistema para recuperar recursos.

O que não está na resposta vinculada são as notificações. As notificações não locais são geradas em um servidor em algum lugar e enviadas ao dispositivo via Apple Push Notifications (APN). O ato de receber uma notificação não indica que o próprio aplicativo fez alguma coisa.

No seu exemplo de nota, quando o aplicativo de nota passa para o segundo plano, é concedido um breve período de tempo para salvar o estado. Se estiver no processo de salvar algo e não puder concluí-lo no tempo permitido, ele poderá solicitar uma extensão, essencialmente, e notificar o sistema quando terminar, para que o aplicativo possa ser suspenso. Esse tipo de trabalho em segundo plano pode ser usado por qualquer aplicativo, não apenas pelos que se enquadram nas categorias listadas acima.

tubedogg
fonte
Ótima resposta ... parece que o iOS rastreia os hábitos do usuário com os aplicativos para agendar intervalos de BAR com mais eficiência com o uso do aplicativo, conectividade wifi, duração da bateria. Imagino que, se você usa muito um aplicativo, ele recebe mais atividades de BAR. Portanto, a resposta é que o estado de execução do aplicativo não importa. Pergunta relacionada sobre intervalos de BAR: apple.stackexchange.com/questions/104572/…
y3sh 13/16