Este projeto demonstra como realizar compartilhamento para Instagram Stories de forma nativa no iOS, sem SDKs externos, utilizando apenas APIs do sistema (UIKit) e o Facebook App ID.
https://github.com/creme-tech/creme-sharing
https://developers.facebook.com/docs/instagram-platform/sharing-to-stories
https://pub.dev/packages/appinio_social_share
O Instagram não fornece um SDK público para compartilhamento em Stories no iOS.
Em vez disso, o fluxo oficial funciona através de:
- URL Schemes (deep links)
- UIPasteboard (área de transferência entre apps)
- Um Facebook App ID válido
O aplicativo prepara os dados (imagem, cores, etc.), coloca esses dados no UIPasteboard e então abre o Instagram via um deep link específico.
O Instagram, ao abrir, lê os dados do UIPasteboard e monta o Story.
O Facebook App ID é um identificador único gerado ao criar um app no Meta for Developers.
Ele é obrigatório para:
- Compartilhamento para Instagram Stories
- Identificação da origem do conteúdo
O Instagram utiliza esse ID para validar qual aplicativo está solicitando o compartilhamento.
- Acesse o painel de desenvolvedor da Meta
https://developers.facebook.com - Clique em “Meus Apps”
- Crie um novo app ou selecione um existente
- Vá em Configurações → Básico
- Copie o valor exibido como App ID
Exemplo de App ID:
1156927169939216
O App ID deve ser passado como parâmetro no deep link de abertura dos Stories:
instagram-stories://share?source_application=SEU_FACEBOOK_APP_IDExemplo real:
instagram-stories://share?source_application=1156927169939216Sem esse parâmetro:
- O Instagram pode ignorar a requisição
- O compartilhamento pode falhar silenciosamente
Seu App
↓
Cria imagem (UIImage)
↓
Escreve dados no UIPasteboard
↓
Abre instagram-stories://
↓
Instagram lê o Pasteboard
↓
Story é montado pelo usuário
A imagem usada no Story é carregada a partir dos Assets do app:
UIImage(named: "image")Essa mesma imagem pode ser reutilizada para outros tipos de compartilhamento.
Os dados são enviados ao Instagram usando chaves oficiais:
let pasteboardItems: [String: Any] = [
"com.instagram.sharedSticker.stickerImage": pngData,
"com.instagram.sharedSticker.backgroundTopColor": "#FFCC00",
"com.instagram.sharedSticker.backgroundBottomColor": "#FF8800"
]Essas chaves são lidas automaticamente pelo Instagram ao abrir.
Após escrever no UIPasteboard, o app abre o Instagram:
let urlString = "instagram-stories://share?source_application=1156927169939216"
UIApplication.shared.open(URL(string: urlString)!)O Instagram então:
- Lê os dados do pasteboard
- Exibe o Story para o usuário
- Permite edição e publicação manual
<key>LSApplicationQueriesSchemes</key>
<array>
<string>instagram</string>
<string>instagram-stories</string>
</array>Para compartilhamento no Feed (salvar imagem):
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Precisamos salvar imagens para compartilhar no Instagram</string>- ❌ Não funciona no Simulator
- ✅ Funciona apenas em iPhone físico
- ❌ Não é possível postar automaticamente
- ✅ Método aceito pela App Store
- ⏱ Dados no
UIPasteboardexpiram automaticamente
Este projeto demonstra a forma oficial e nativa de compartilhar conteúdo para Instagram Stories no iOS:
- Sem SDKs externos
- Sem dependências
- Total controle do fluxo
- Compatível com SwiftUI, UIKit e Flutter (via plugin)
O Flutter, quando usado, atua apenas como ponte, enquanto toda a lógica real acontece no código nativo iOS.