Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 495 - Swiftではじめる教科書:SNSへの投稿

こういう本ではありがちで、次々にチャプターが進んでいきます。次は「SNSへ投稿する」です。もうSNSの利用ができるようになります。なんでも先に進むっていいことですね。頑張ってついていきます。

SNSは「Twitter」と「Facebook」への投稿です。

そして私が初めて扱うのが「投稿ダイアログ」です。投稿ダイアログを表示する方法は、主要なものが2つあるようです。当然コードで実装する方法なんてのもあるから、ここで2つだけと思い込まない方がいいでしょう。

  • 投稿ダイアログをすぐ表示する方法
  • 共有アクションシートから投稿ダイアログを表示する方法

これを利用するためにSocial Frameworkを導入する必要があるので、新しいプロジェクトを作ります。XcodeのNew Projectを選んで、「iOS」の「Application」から「Single View Application」を選んで、名前を「SFTestProject」とします。 他の設定は今までと同様です*1

プロジェクト・ナビゲータからViewController.swiftを選びます。「import UIKit」の下に下のコードを加えます。

import Social

これでSocial Frameworkのクラスが使えるようになります。頭文字に「SL(なぜSL?)」がつくクラスです。

投稿ダイアログをインスタンス化させるのは何処か?

投稿ダイアログは何かしらアクション(普通はボタンをプレスするときです)実行後に出現させたいので、Main.storyboardを開いて次のようにボタンを設置します。

ダブルクリックしてタイトルを「メッセージ投稿」に変更して、「Ctrl + ドラッグ」でViewController.swift内に@IBActionを作ってコードに繋ぎます。アクション名は「postFacebookBtn」にすると、ViewController内に同名のメソッドができます。

f:id:yataiblue:20151116141156j:plain

設置するオブジェクトはボタン1つだけ、このアクションメソッドで投稿ダイアログをインスタンス化させるので、メソッド内にコードします。

let postMessage = 
 SLComposeViewController(forServiceType: SLServiceTypeFacebook)

たったこれだけで投稿ダイアログがコントロールできるんです。

色々と属性も変化させることができるようです。

あらかじめ投稿用の文字列も組み込むことができます。

postMessage.addInitialText(("コメント入れます")

これだけでも表示はされません。現在使用しているViewControllerに切り替えを指示しないと行けないからです。

self.presentViewController(postMessage, animated: true, 
                                          completion: nil)

たった3行です。これでランしてボタンを押すとFacebookへの投稿用のダイアログが出現します。

たった3行です。試しに、実機の自分のiPhone6s Plusでプロジェクトをランすれば、自分のFacebookアカウントに接続されて、メッセージを入力すれば本当にポストできました! あまりの簡単さに驚きです。

f:id:yataiblue:20151116170732j:plain

しかし、デフォルトの文字列「コメントを入れます」が表示されていません...

このプロジェクトを試しにシュミレーター(自分Facebookアカウントが無い状態)でランすると、初期入力文字は出現するんです。

f:id:yataiblue:20151116170857j:plain

まだ良くわかっていないので今後の課題にします。それでも超簡単にFacebookにコメントを投稿できたのには驚きました!

今日はここまで。

*1:プロジェクト名以外の部分はここの手順と同様です