Tiago Aguiar

iOS: Compartilhe Textos Com UIActivityViewController (Share String)

avatar
Preview Image

UIActivityViewController é o principal componente iOS para compartilhar textos no facebook, email e outros aplicativos iOS como mídias sociais.

Neste tutorial, passo a passo eu vou te ensinar como você pode adicionar essa funcionalidade no seu aplicativo hoje mesmo e o por quê você deve considerar implementar isto no seu aplicativo iOS.

Compartilhando Textos Entre Aplicativos iOS (Share String)

Pode até parecer uma ideia simples para muitos desenvolvedores iOS mas após realizar vários testes nos meus aplicativos pessoais, notei que essa funcionalidade - compartilhar textos entre apps - acabou se tornando algo de extremo valor para o meu aplicativo.

Isso porque, ao compartilhar textos, possibilitou que meu aplicativo tivesse centenas de novos usuários todos os dias sem ter que pagar nada por isso. Apenas por recomendação dos usuários atuais que já curtem o aplicativo.

Eu até entendo que muitos desenvolvedores e programadores iOS vão deixar essa funcionalidade para a última hora, mas ela é tão simples de ser adicionada que você pode colocar hoje mesmo no seu app.

Dentro deste espaço de compartilhamento você pode:

  • Promover o seu aplicativo atual (incentivando a tomar ações)
  • Promover um próximo aplicativo (já que você tem o controle do texto que será inserido aqui)
  • Promover produtos de terceiros (parcerias por exemplo)

Basta um pouco de criatividade e um objetivo em mente você pode desfrutar desse recurso nativo do iOS.

Dito isto, vamos ao código!

Como Compartilhar Textos Com o UIActivityViewController

Então, a primeira coisa a se fazer é criar um projeto tradicional, no Xcode:

Abra a última versão do Xcode. Escolha a opção Create a new Xcode project > Escolha a Single View App a aperte Next.

xcode 9 new project

single view app project

Com o Xcode aberto preencha todos os campos obrigatórios para o projeto iOS:

  • Product Name: ios share text tutorial – Este é o nome do seu aplicativo.
  • Team: Sua conta Apple (caso já tenha uma)
  • Organization Identifier: br.com.iosdeveloper – Este é o nome do seu domínio para identificar o autor do projeto. Caso não tenha, você pode utilizar o meu ou preencher com “com.example”.
  • Organization Name: iOS Developer – Este é o nome da empresa/do autor.
  • Language – Escolha Swift.

Clique em Next para continuar. O Xcode irá te perguntar onde ele deve salvar o projeto ios-share-text-tutorial. Escolhar qualquer pasta (ex.: Desktop) para salvar o seu projeto. Tire a seleção de Create Git repository on my Mac para não utilizar o Controle de Versão Git pelo Xcode.

create xcode git

Para exemplificar este tutorial, não irei utilizar uma storyboard porque o foco não é mostrar conceitos de AutoLayout e Design como um todo, eu irei criar uma View bem simples em linhas de código somente para demonstrar a funcionalidade de compartilhar textos, combinado!?

Primeiro vamos literalmente excluir a Main.storyboard porque não iremos utilizá-la. Clique no projeto e remova a Main.storyboard do Deployment Info -> Main Interface conforme a imagem:

excluir storyboard tableview

Agora abra o AppDelegate.swift e adicione o seguinte código no método didFinishLaunchingWithOptions. Este código será necessário para termos uma UIWindow (view) que será nossa View raiz contendo a nossa ViewController principal.

Saiba que o objeto UIWindow é o container/tela raiz onde podemos adicionar ViewControllers à ela através da atribuição rootViewController.

1
2
3
4
5
6
7
8
var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
	window = UIWindow(frame: UIScreen.main.bounds)
	window?.rootViewController = ViewController()
	window?.makeKeyAndVisible()
	return true
}

Neste momento, já temos o ponto de entrada (entry-point) do nosso aplicativo iOS pronto para ser utilizado pela ViewController.

O próximo passo é codificar a ViewController para que ela possua um único botão no centro da tela que será responsável por chamar nossa UIActivityViewController.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class ViewController: UIViewController {

	override func viewDidLoad() {
		super.viewDidLoad()
		self.view.backgroundColor = .green // 1

		let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) // 2
		btn.setTitle("Compartilhar", for: UIControlState.normal) // 3
		btn.addTarget(self, #selector(btnTapped), for: UIControlEvents.touchUpInside) // 4
		btn.center = self.view.center // 5
		self.view.addSubview(btn) // 6
	}

	@objc func btnTapped() { // 7
		print(123)
	}

}
  1. Nessa linha apenas definimos uma cor padrão de fundo para garantir que o aplicativo esteja executando normalmente
  2. Criamos um botão UIButton padrão sem se preocupar com AutoLayout aqui. Apenas para entender a funcionalidade de compartilhamento de textos
  3. Definimos um título para o botão
  4. Adicionamos o método que irá “escutar” os eventos de touch do iOS através de [#selector()][8]
  5. Centralizamos o botão ao meio do iPhone/iPad
  6. Adicionamos (efetivamente) o botão UIButton a View principal - o contâiner.
  7. O método para escutar eventos pelo selector precisa ter a anotação @objc para que funcione.

Após executar o aplicativo em um iPhone, podemos visualizar um botão ao centro da tela com a frase Compartilhar.

compartilhar-share-texto-ios

Usando a UIActivityViewController passo a passo

Vamos alterar o método btnTapped() para adicionar a UIActivityViewController.

1
2
3
4
@objc func btnTapped() {
	let actVC = UIActivityViewController(activityItems: ["quero compartilhar essa mensagem"], applicationActivities: nil)
	self.present(actVC, animated: true, completion: nil)
}

Essas linhas são responsáveis por exibir uma caixa com as opções de aplicativos disponíveis no iPhone do usuário. É interessante notar que caso você esteja utilizando um simulador e não um iPhone real, alguns aplicativos de compartilhamento como Email não irá aparecer, mas irá funcionar em um dispositivo de verdade.

Em alguns casos, eventualmente você não queira compartilhar os textos por determinados canais de comunicação (como e-mail por exemplo). Para excluir esses canais, você precisará adicionar uma linha de código: actVC.excludeActivityTypes = [UIActivityType.mail].

1
2
3
4
5
@objc func btnTapped() {
	let actVC = UIActivityViewController(activityItems: ["quero compartilhar essa mensagem"], applicationActivities: nil)
	actVC.excludeActivityTypes = [UIActivityType.mail]
	self.present(actVC, animated: true, completion: nil)
}

Após executar o aplicativo e clicar no botão compartilhar você terá uma tela parecida com esta aqui:

share-text-ios-final

É com simples ações como esta que o seu aplicativo pode aumentar o número de downloads sem esforços ou gastos. Nem sempre precisamos complicar as coisas para ter grandes resultados em um projeto.

Vai lá, adicione isso no seu aplicativo ou no app da sua empresa e mostre o que você aprendeu..

Mas antes, eu gostaria fortemente que você ajudasse esse blog a crescer para que outros desenvolvedores iOS possam aprender também. É bem simples.

  • Compartilhe nas redes sociais com seus amigos.

Maravilha! Em breve você receberá conteúdos exclusivos por e-mail. Continue lendo os artigos para aprender mais sobre programação.