Compartilhando dados com UIActivityViewController
Veremos nesse artigo, como compartilhar textos e imagens no iOS através da classe UIActivityViewController
.
Estou desenvolvendo um app para o cadastro de alunos. Na tela principal é apresentado uma lista com o nome e a foto do aluno.
Utilizaremos como exemplo esse app de agenda:
Ao clicar no nome aluno, conseguimos visualizar suas informações:
Nosso objetivo é compartilhar o nome, nota e a imagem do aluno com outros professores.
Mas como poderíamos compartilhar essas informações rapidamente?
O caminho mais comum, seria o usuário tirar screenshot, recortar a imagem e enviar por e-mail. Mas, repare que o usuário teria que fazer vários passos até conseguir de fato compartilhar essa foto.
É muito importante nos atentarmos aos pequenos detalhes que facilitam a vida dos usuários. Ele quer compartilhar os dados. Portanto, vamos criar um botão para isso.
Vamos utilizar a UIActivityViewController
.
Vamos começar, criando uma ação para o botão share:
@IBAction func botaoCompartilhar(_ sender: UIButton) {
// TO DO: Implementações..
}
Esse botão vai, primeiramente, compartilhar o nome do aluno. Por isso vamos extrair o valor do textfieldNome
. Em seguida vamos instanciar o UIActivityViewController
:
@IBAction func botaoCompartilhar(_ sender: UIButton) {
guard let nome = textFieldNome.text else { return }
let activityViewController = UIActivityViewController(activityItems: [nome], applicationActivities: nil)
present(activityViewController, animated: true, completion: nil)
}
Repare que ao instanciar o ActivityViewController, podemos passar um array por parâmetro. Vamos começar passando apenas o nome.
Vamos rodar o aplicativo para testar:
Ao clicar no botão share, conseguimos compartilhar um texto - o nome do aluno. Vamos clicar na opção de e-mail:
Ótimo, já conseguimos compartilhar facilmente um texto simples.
O próximo passo então é compartilharmos a nota e a imagem. Ou seja, precisamos passar a foto e a nota para o UIActivityViewController:
@IBAction func botaoCompartilhar(_ sender: UIButton) {
guard let nome = textFieldNome.text else { return }
guard let nota = textFieldNota.text else { return }
guard let imagemDoAluno = imagemAluno.image else { return }
let activityViewController = UIActivityViewController(activityItems: [imagemDoAluno, nome, nota], applicationActivities: nil)
present(activityViewController, animated: true, completion: nil)
}
Agora, rodando o app para testar, temos o seguinte:
Repare que escolhendo a opção e-mail, conseguimos compartilhar o nome, nota e a foto do aluno.
Compartilhando informações
Uma de nossas missões com desenvolvimento mobile é sempre pensar na usabilidade. Ela é muito importante para reter usuários em nosso aplicativo. Nesse post, aprendemos a utilizar a classe UIActivityViewController
para compartilhar textos e imagens rapidamente com outros aplicativos.
Aqui na Alura, temos uma formação iOs. Nela você aprenderá desde o básico da construção de aplicativos até técnicas avançadas, como sincronização com serviços web.