12
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

【Swift】Twitterでシェアする機能を追加する

アプリから下記のようなTwitterのツイート画面に遷移させる方法です。
example

動作環境

動作環境 バージョン
Xcode 12.1
iOS 14.1
Swift 5

コピペで使えるTwitterシェア関数

func shareOnTwitter() {

        //シェアするテキストを作成
        let text = "AppからTwitterでシェアする"
        let hashTag = "#ハッシュタグ"
        let completedText = text + "\n" + hashTag

        //作成したテキストをエンコード
        let encodedText = completedText.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

        //エンコードしたテキストをURLに繋げ、URLを開いてツイート画面を表示させる
        if let encodedText = encodedText,
            let url = URL(string: "https://twitter.com/intent/tweet?text=\(encodedText)") {
            UIApplication.shared.open(url)
        }
    }

実装サンプル

Twitterでシェアボタンを押すと、上記のshareOnTwitter関数が実施されるサンプルです。

イメージ.GIF

解説

1.作成したテキストをURLに繋げれるように、addingPercentEncodingを行う

let encodedText = completedText.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

作成したテキストにパーセントエンコードを行い、URLで使用できるようにします。

2.TwitterのURLにエンコードしたテキストを繋げて、そのURLを開いてツイート画面を表示する

if let encodedText = encodedText,
            let url = URL(string: "https://twitter.com/intent/tweet?text=\(encodedText)") {
            UIApplication.shared.open(url)
        }

・オプショナル型のencodeTextをオプショナルバインディング
・アンラップしたencodedTextURL(string:twitter.com/intent/tweet?text=(encodedText))に繋げる
・作成したURL(string:twitter.com/~)をオプショナルバインディング
UIApplication.shared.open(_ url: URL)にアンラップしたURLを入れる

UIApplication.shared.openとは?

Apple公式ドキュメントより

Attempts to open the resource at the specified URL asynchronously.

特定したURLを非同期で開くのを試みます。的な感じでしょうか。

まぁ、開いて欲しいURLを入れたら、そのページを開いてくれるようです!

まとめ

アプリが広まる仕掛けが必要と言うことで、今回個人開発アプリに実装しました。
特にフレームワークを使う必要も無いですし、簡単に実装できるので是非導入してみてください☺︎

何か誤りがありましたら、優しく教えていただけると幸いです🙇‍♂️

参考

iOS の Twitter シェア簡易実装 2019

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
12
Help us understand the problem. What are the problem?