[iOS]ShareKitでTwitterに投稿する

2014.04.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Social.frameworkを使わない勇気

iOS6からSocial.frameworkが使えるようになりました。 これにより、TwitterやFacebookへの投稿が簡単になったのは、様々なブログで取り上げられているので使用している方も多いはず。 しかし、これには一つだけ難点があります。投稿クライアントがiOSとなる難点が。

WS000020

正直気にしない人は気にしないですが、やっぱ投稿クライアントはオリジナルのものを表示させたいですよね。 ってことで、今回はSocial.frameworkを使わないでTwitterへ投稿する方法を使います。 今年の元旦にunderscoreからリリースしたカラオケなうを、久しぶりにメンテナンスするついでに、こいつをTwitter投稿クライアントとして登録してアップデートしましょう。

 ShareKitを使う

ShareKitは、各SNSへ簡単に投稿できるようになるフレームワークの一種であり、Twitter以外にもFacebookやGoogle+、Tumblrといったものに対して簡単にシェアができます。 3行記述すれば共有が可能というのが謳い文句らしいですが、実際は3行以外にも設定を結構行わなければならず、一筋縄ではいきませんでした。

ShareKitのインストールは割と簡単です。 CocoaPodsが使用できる環境であれば、Podsファイルに下記の行を追加すれば使用できます。

platform :ios
pod 'ShareKit/Twitter'

他のサービスを使用す売る際は、その分ShareKit配下のサービスを指定してください。 また、CocoaPodsを使わなくても、GithubからダウンロードしたFrameworkを追加することで使用することが可能です。

インストールできたら、設定ファイルクラスを実装します。 DefautSHKConfiguratorを継承して、新しいConfigurationクラスを作ります。

MySHKConfiguration.h

#import "DefaultSHKConfigurator.h"
@interface MySHKConfiguration : DefaultSHKConfigurator

@end

実ファイルの設定内容を、ShareKit/Core/DefaultSHKConfigurator.mからコピーします。

コア設定と、Twitterに関係する関数は以下になります。

MySHKConfiguration.m

#import "KNSHKConfiguration.h"
@implementation KNSHKConfiguration
- (NSString *)appName{
    return @"カラオケなう";
}
- (NSString *)appURL{
    return @"https://dev.classmethod.jp/etc/karaoke-now-ios/";
}

#pragma mark - Twitter
- (NSString*)twitterConsumerKey {
    return @"xxxxxxxxxxxxxxxxxxxxx";
}
- (NSString*)twitterSecret {
    return @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
}
// You need to set this if using OAuth, see note above (xAuth users can skip it)
- (NSString*)twitterCallbackUrl {
    return @"https://dev.classmethod.jp/etc/karaoke-now-ios/";
}
// To use xAuth, set to 1
- (NSNumber*)twitterUseXAuth {
    return [NSNumber numberWithInt:0];
}
// Enter your app's twitter account if you'd like to ask the user to follow it when logging in. (Only for xAuth)
- (NSString*)twitterUsername {
    return @"";
}

この内容を、Twitterのアプリ登録情報に合わせて修正します。

TwitterのDeveloperサイトでアプリを登録します。

WS000021

この中でハマることになったのが、CallbackURLを設定することです。 私は、Websiteと同じものを設定しています。 このWebsiteはアプリの紹介ページなのですが、カラオケなう自体の「カラオケなうをつくろう!」のBlogへリンクしています。

このアドレスと同じものを、twitterCallbackUrlに設定します。 設定しない場合は以下の様なエラーが表示されます。

IMG_4976

設定が終わったら、実際にプログラムにコードを挿入しましょう。 設定ファイルはAppDelegateで読み込んで設定します。

MyAppDelegate.m

#import "MySHKConfiguration.h"
#import "SHKConfiguration.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    DefaultSHKConfigurator *configurator = [[MySHKConfiguration alloc] init];
    [SHKConfiguration sharedInstanceWithConfigurator:configurator];
}

開く箇所では下記のように記述します。

MyViewController.m

#import "ShareKit.h"
#import "SHKTwitter.h"

// メソッド内
NSString *sendMessage = [NSString stringWithFormat:@"つぶやく内容はここに記述しますよ"];
SHKItem * item = [SHKItem text:sendMessage];
[SHKTwitter shareItem:item];

確かに実態のコードは3行でした。 今回の設定では、テキストを出力しているだけなので、もし画像などをTwitterでつぶやきたい時は、SHKItemのクラスのコンビニエンスコンストラクタにまとめられていますので、ヘッダなどを参考に色々やってみてください。

なお、カラオケなうでShareKitを使ってつぶやいた例が以下になります。

WS000022

まとめ

今回は、Social.frameworkを使わないでShareKitを使用してTwitterに呟く方法を実装しました。 こうすることで、少しでも自分のアプリをアピールすることができます。