MENU
コンテンツ再構築中

Swift: iOS アプリに SNS (Twitter, Facebook) 共有ボタンを実装する

Swift でアプリに SNS 共有ボタンを実装したいと思います。

アプリのユーザーがどれだけ SNS 共有機能を使ってくれるかは、アプリ自体の魅力や機能にもよりますが、どんな種類のアプリであれ、実装しておいたほうが好ましい機能ではあります。

今回 SNS 共有は Social フレームワークを使用し実装するので、ボタンのクリックイベントのメソッドに数行のコードを記述するだけで、簡単に Twitter や Facebook で情報を共有することが出来ます。

INDEX

■目次

  • Social.framework のインポート
  • UIButton を配置する
  • Twitter 共有のメソッドを記述する
  • Facebook 共有のメソッドを記述する

■詳細説明

Social.framework のインポート

UIViewController に Social フレームワークをインポートします。

ViewController.swift

[code]
import UIKit
import Social

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
}
}
[/code]

UIButton を配置する

UIViewController の viewDidLoad で Twitter と Facebook という名称の UIButton を配置し各ボタンにメソッドを定義します。

ここでは viewDidLoad に直接 UIButton をコードで定義・配置していますが、Storyboard と IBOutlet を使っても構いません。

[code]
import UIKit
import Social

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

println(“viewDidLoad”)

var tweetButton: UIButton = UIButton()
var facebookButton: UIButton = UIButton()

tweetButton.setTitle(“Twitter”, forState: .Normal)
tweetButton.frame = CGRectMake(0, 0, 300, 50)
tweetButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
tweetButton.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)
tweetButton.layer.position = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY – 30)
tweetButton.addTarget(self, action: “onClickTweetButton:”, forControlEvents:.TouchUpInside)

facebookButton.setTitle(“Facebook”, forState: .Normal)
facebookButton.frame = CGRectMake(0, 0, 300, 50)
facebookButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
facebookButton.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)
facebookButton.layer.position = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY + 30)
facebookButton.addTarget(self, action: “onClickFacebookButton:”, forControlEvents:.TouchUpInside)

self.view.addSubview(tweetButton)
self.view.addSubview(facebookButton)

}
}
[/code]

Twitter 共有のメソッドを記述する

ViewController に viewDidLoad 内で twitter ボタンのアクションに指定した onClickTweetButton メソッドを定義します。

[code]
func onClickTweetButton(sender: UIButton) {

let text = “twitter share text”

let composeViewController: SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)!
composeViewController.setInitialText(text)

self.presentViewController(composeViewController, animated: true, completion: nil)
}
[/code]

Facebook 共有のメソッドを記述する

ViewController に viewDidLoad 内で facebook ボタンのアクションに指定した onClickFacebookButton メソッドを定義します。

[code]
func onClickFacebookButton(sender: UIButton) {

let text = “facebook share text”

let composeViewController: SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)!
composeViewController.setInitialText(text)

self.presentViewController(composeViewController, animated: true, completion: nil)
}
[/code]

ViewController 全体のコードは以下のようになります。

ViewController.swift

[code]
import UIKit
import Social

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

println(“viewDidLoad”)

var tweetButton: UIButton = UIButton()
var facebookButton: UIButton = UIButton()

tweetButton.setTitle(“Twitter”, forState: .Normal)
tweetButton.frame = CGRectMake(0, 0, 300, 50)
tweetButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
tweetButton.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)
tweetButton.layer.position = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY – 30)
tweetButton.addTarget(self, action: “onClickTweetButton:”, forControlEvents:.TouchUpInside)

facebookButton.setTitle(“Facebook”, forState: .Normal)
facebookButton.frame = CGRectMake(0, 0, 300, 50)
facebookButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
facebookButton.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)
facebookButton.layer.position = CGPoint(x: self.view.frame.midX, y: self.view.frame.midY + 30)
facebookButton.addTarget(self, action: “onClickFacebookButton:”, forControlEvents:.TouchUpInside)

self.view.addSubview(tweetButton)
self.view.addSubview(facebookButton)

}

func onClickTweetButton(sender: UIButton) {

let text = “twitter share text”

let composeViewController: SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)!
composeViewController.setInitialText(text)

self.presentViewController(composeViewController, animated: true, completion: nil)
}

func onClickFacebookButton(sender: UIButton) {

let text = “facebook share text”

let composeViewController: SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)!
composeViewController.setInitialText(text)

self.presentViewController(composeViewController, animated: true, completion: nil)
}

}
[/code]

■結果

アプリをビルドし動作を確認します。

swift-sns-share-implement01

twitter タップ時の共有画面。

swift-sns-share-implement02

facebook タップ時の共有画面。

swift-sns-share-implement03

もし、ボタンをタップしてもデバイスで twitter や facebook のアカウントが設定されていなければ警告が出ます。

swift-sns-share-implement04

■まとめ

今回のサンプルコードではテキストを SNS 共有しましたが、アプリ内で画像を取得し、画像や URL のリンクテキスト等も共有可能です。

アプリの目的に応じた情報を共有する機能を実装することで、より多くのユーザーにアプリの存在をアピールできるできるのではないでしょうか。

この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Please share it!
  • URLをコピーしました!
  • URLをコピーしました!
INDEX