はじめに
以前に投稿した下の記事で
ソーシャル機能の分析と目的、効果について少し書きました。
人気アプリから学ぼう 「ねこあつめ」その5:ソーシャル機能を分析しよう!編
今回はそれの
実践編です。
基本的にはコードを見てもらえば、理解していただけると思うのですが、それぞれ少しづつ注意点があるので、確認してください。
Facebookへの投稿
利用するには、Social.frameworkの追加が必要です。
【簡単な説明】
SLComposeViewController *facebookPostVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[facebookPostVC setInitialText:text];
[facebookPostVC addURL:[NSURL URLWithString:url]];
[facebookPostVC addImage:[UIImage imageNamed:image]];
[facebookPostVC setCompletionHandler:^(SLComposeViewControllerResult result) {
if (result == SLComposeViewControllerResultDone) {
//投稿完了の処理
}
}];
[ViewController presentViewController:facebookPostVC animated:YES completion:nil];
SLComposeViewControllerを利用して、Facebookに対し、投稿テキスト、URL、イメージを投稿しています。
投稿完了時にはイベントを受け取り、投稿のお礼メッセージや、プレゼントなど処理をします。
Twitterへの投稿
利用するには、iOSバージョンごとに適切なframeworkの追加が必要です。
iOS6.0以上の場合、Social.frameworkの追加が必要
iOS5.0以下の場合、Twitter.frameworkの取り込みが必要
【簡単な説明】
NSString *iosVersion = [[[UIDevice currentDevice] systemVersion] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([iosVersion floatValue] >= 6.0) {
}
else if ([iosVersion floatValue] >= 5.0) {
}
iOSのバージョンで、Social.frameworkを使うか、Twitter.frameworkを利用するかを決定しています。
SLComposeViewController *twitterPostVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[twitterPostVC setInitialText:text];
[twitterPostVC addURL:appURL];
[twitterPostVC addImage:[UIImage imageNamed:image]];
[twitterPostVC setCompletionHandler:^(SLComposeViewControllerResult result) {
if (result == SLComposeViewControllerResultDone) {
//投稿完了の処理
}
}];
[ViewController presentViewController:twitterPostVC animated:YES completion:nil];
SLComposeViewControllerを利用して、Twitterに対し、投稿テキスト、URL、イメージを投稿しています。
投稿完了時にはイベントを受け取り、投稿のお礼メッセージや、プレゼントなど処理をします。
Lineへの投稿
frameworkは必要ないですが、テキストとイメージが別々にしか投稿できません。
また、投稿完了を受取ることができないので、利用には注意が必要です。
【簡単な説明】
text = [text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *LINEUrlString = [NSString stringWithFormat:@"line://msg/text/%@", text];
LINEに文字列を投稿するためのURLを作成します。
LINEへは「line://msg/text/(投稿したい文字列)」というURLスキーマを利用して投稿することになります。
//iOS7.0以降では共有のクリップボードを使う必要がある
UIPasteboard *pasteboard;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {
pasteboard = [UIPasteboard generalPasteboard];
} else {
pasteboard = [UIPasteboard pasteboardWithUniqueName];
}
[pasteboard setData:UIImagePNGRepresentation(image) forPasteboardType:@"public.png"];
NSString *LINEUrlString = [NSString stringWithFormat:@"line://msg/image/%@", pasteboard.name];
LINEにイメージを投稿するためのURLを作成します。
投稿にはUIPasteboardを利用します。
LINEへは「line://msg/text/(投稿イメージ名)」というURLスキーマを利用して投稿することになります。
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:LINEUrlString]]) {
LINEアプリがインストールされているか確認します。
インストールされていない場合は、LINEアプリのストアへ遷移などしてもよいかもしれません。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:LINEUrlString]];
LINEへ投稿します。
LINEは投稿完了を受け取れないため、メソッドコールと投稿完了がイコールとなります。