[iOS 7] 自作アプリにFlickrとVimeo投稿機能を実装する

前回の、iOS7になって追加されたFlickrとVimeo連携では写真ロールからFlickr及びVimeoへと投稿を行いました。
今回は、この部分を自作アプリで実装するようにしましょう。

たった数行でFlickrおよびVimeo投稿機能が付けられる

実装とは言っても、そんなに難しくないですし、どちらかと言うとiOS7になったことで、投稿の幅が広がったと言えます。
投稿には、UIActivityViewクラスを使用します。

さて、自作アプリを作るのもめんどくさいので、iOS7の記事の時に用いたiOS7のフィルタ追加サンプルを使用しましょう。
せっかくフィルタを用いた処理を行ったのですから、それをTwitterやFacebookに投稿したいというケースは多々存在しますよね。
iOS6から、それをUIActivityViewもしくはSocialFrameworkを使うことで簡単に実装できるようになっていました。
今回のiOS7では、SocialFrameworkは残念ながら対応していませんが、UIActivityViewが対応していました。

自作アプリ自体は大したことなくて、ロードしてフィルタかけるだけ。
の、左下にツールバーを挿入して、Sendボタンを設定しました。

iFilter

投稿する画像は、ImageViewに表示されたものをそのまま使用することとします。
Sendボタンを押したアクションを、以下のように設定します。

- (IBAction)bSend:(id)sender {
    NSString *body = @"投稿する内容。なくても大丈夫";
    UIImage *sendImage = _mainImage.image;
    NSArray *items = @[body,sendImage];
    
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc]
        initWithActivityItems:items applicationActivities:@[]];

    [self presentViewController:activityViewController animated:YES completion:nil];
}

ごくごくシンプルな、ほんの数行のソースコードです。
これを、iOS7で実行してみます。

 IMG_2228

フィルタを掛けた画像を、Shareボタンを押すと

 IMG_2229

Flickrのアカウントが登録されていると、Flickrが表示されます。
なお、他のサービスのアカウントを登録している場合は、他のアカウント情報も表示されます。
消す方法は後述します。

 IMG_2230

Flickrのアイコンをクリックすると、SNS投稿画面が表示されます。
あとは、前回と同様に本文を入力したら投稿ができます。
投稿したサンプルはこちらになります。
Vimeoの場合は今回実践しませんでしたが、NSURLでファイルを直接指定することで、表示が可能となるようです。

おまけ:表示しないサービスを指定する

基本的にUIActivityViewerは、投稿できるものをすべて表示するようになっています。
サービスを除外するときは、基本的に不要なものを指定する形になります。
ここでは、ソースコードに以下のように指定してみます。

/* 表示しないサービスを選択する */
    activityViewController.excludedActivityTypes =
        @[UIActivityTypePrint,
          UIActivityTypePostToFacebook,
          UIActivityTypeSaveToCameraRoll,
          UIActivityTypeMail
        ];

すると、投稿できるものが次のようになります。

IMG_2232

こうやって、制限することができます。