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