【Xcode】アプリの結果をSNSに投稿できるようにしよう|Social.framework

みなさんこんにちは。Yuta Fujii(@HofuCamera)です。

今回は「開発したアプリの結果をSNSに投稿できする」開発していきたいと思います。

ここでいうSNSへの投稿とはFacebookとTwitterのことになります。

このSNSへの投稿ができるようになると「Social.framework」というフレームワークの使い方をマスターできるとともに、簡単にSNSへ投稿を行うことができるようになります。

また、実際に自分でオリジナルアプリに変更していろいろな応用アプリを作れるようになるかと思いますので、それでは作っていきましょう!

↓Xcodeの環境構築がまだの方はこちら↓

画面を整える

今回は、

【Xcode】10秒で止める「ジャストタイムiPhoneアプリ」を開発してみよう|条件分岐・タイマーの使い方

で開発したアプリの結果をSNSに投稿できるようにします。

今回は、SNSへその結果を投稿する部分を行っていきたいと思います。

まず、「ボタンを押すと投稿画面がでる」ということを行いたいので「Facebookへ投稿」ボタンと「Twitterへ投稿」ボタンを作成していきます。

Buttonを画面の上にのせていきます。右側からButtonを選択して、画面へドラッグ&ドロップしてのせてください。

そして、ボタンをダブルクリックして「Facebookへ投稿」と名前をつけてください。
xcode_justTime1
それが完了したら、このButtonを押したときの処理を記述する場所を作っていきたいと思います。

Facebookへ投稿」ボタンを選択した状態でcontrolを押しながら、プログラムの方へドラッグ&ドロップをしていきます。

すると、線が伸びていることがわかるかと思います。

名前を決める画面が出るので、「shareFacebook」と名付けます。
xcode_justTime2
xcode_justTime3
同じように、Twitterへ投稿ボタンも作っていきます。

Buttonを画面の上にのせていきます。

右側からButtonを選択して、画面へドラッグ&ドロップしてのせてください。

xcode_justTime4

そして、ボタンをダブルクリックして「Twitterへ投稿」と名前をつけてください。

xcode_justTime5

「Twitterへ投稿」ボタンを選択した状態でcontrolを押しながらプログラムの方へドラッグ&ドロップをしていきます。

すると、線が伸びていることがわかるかと思います。

名前を決める画面が出るので、「shareTwitter」と名付けます。

xcode_justTime6

フレームワークを導入する【Social.frameworkとは】

続いてSNSへ投稿するためのフレームワークを導入していきます。

左端の赤い部分をクリックすると、下記のような画面が出てくると思います。

左側の画面を下へドラッグ&ドロップしていくと、
xcode_justTime7
「Linked Frameworks and Libraries」という箇所があると思います。
ここのプラスボタンを押してください。
xcode_justTime8

するとフレームワークを導入する画面をでてくるので、「Social.framework」と検索して、Addボタンをクリックします。

これで導入部分は完了です。

xcode_justTime9
xcode_justTime10
この「Social.framework」とは、iPhoneからSNSへ投稿する際に簡単に投稿できる道具が入っているものとなります。
それでは、この道具「Social.framework」をプログラムへ導入していきます。
ViewController.mへ#import と記述します。
これで「Social.framework」のプログラムへの読み込みは完了です。
xcode_justTime11

Facebookへ文字を投稿するには

さらに、投稿するメソッドを作成していきます。
まずはFacebookへ投稿するメソッドを作っていきたいと思います。
下記のように、

[objc]
-(void)shareFB{

NSString *serviceType = SLServiceTypeFacebook;
if ([SLComposeViewController isAvailableForServiceType:serviceType]) {
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:serviceType];
[controller setInitialText:@””];

[self presentViewController:controller
animated:YES
completion:NULL];
}
}[/objc]

と記述してください。
xcode_justTime12
重要な箇所を説明します。
まず、最初の部分である、

[objc]
NSString *serviceType = SLServiceTypeFacebook;
[/objc]

でFacebookへ投稿することを示しています。
xcode_justTime13
これはTwitterへ投稿する際は、

[objc]
NSString *serviceType = SLServiceTypeTwitter;
[/objc]

となります。
重要なのはSLServiceTypeTwitterの部分です。
フレームワークの使い方として、このSLServiceTypeTwitterという箇所を変えるだけで、どちらに投稿したいかを決定することができます。
しかし、まだ何を投稿したいのかを決めていません。
これもテンプレートとして用意してあり、

[objc]
[controller setInitialText:@“”];
[/objc]

の部分の

[objc]@“ここに文字を記入します”[/objc]

これでFacebookへ投稿する準備ができました。
xcode_justTime14

Twitterへ文字を投稿するには

同じようにTwitterへ投稿するものも作っていきます。
下記のように記述します。

[objc]
-(void)shareTw{

NSString *serviceType = SLServiceTypeTwitter;
if ([SLComposeViewController isAvailableForServiceType:serviceType]) {
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:serviceType];

[controller setInitialText:@”10秒ジャストでとめたよ!!”];

[self presentViewController:controller
animated:YES
completion:NULL];
}
}
[/objc]

xcode_justTime17
ここでも重要な箇所だけ変更しています。

SLServiceTypeTwitterとなっていることを確認してください。これでTwitterへ投稿する準備ができました。

ただ、このままではこれらのプログラムの箇所は呼び出されることはありません。なので、「Facebookへ投稿」ボタンが押されたとき、または「Twitterへ投稿」ボタンが押されたときに呼び出したいと思います。

下記のように記述します。

まず、shareFacebookの中で、

[objc][self shareFB];[/objc]

xcode_justTime18
次にshareTwitterの中で、

[objc][self shareTw];[/objc]

と記述します。
xcode_justTime19
これで、先ほど作った投稿するメソッドが呼ばれることになります。

シミュレーターで確認してみよう

それでは、シミュレーターで確認してみたいと思います。

左上の▶ボタンを押してシミュレーターを立ち上げてみてください。

下記は「Facebookへ投稿」ボタンを押したとき、
xcode_justTime20
そして、下記は「Twitterへ投稿」ボタンを押したとき、
xcode_justTime21
の画面になります。

どちらもはじめから文字が挿入されていることがわかると思います。これで完了です!

まとめ:Social.frameworkを使いこなして結果をSNSに投稿

いかがでしたか?

このように簡単にSNSへの投稿も行うことができます。

よくゲームアプリなどでみる光景だと思います。

複雑そうに見えるSNS投稿もSocial.frameworkを利用すると簡単に行うことができます。

ぜひお試しください。