Compartilhando dados com UIActivityViewController

(Last Updated On: 25 de setembro de 2018)

Veremos nesse post, 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 é sem dúvida 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 a carreira para o desenvolvimento de aplicativos para 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.

FIQUE POR DENTRO

Próximo ArtigoNomes de classes no CSS