tottepostを実装するために、写真を色々なサービスにアップロードする必要がありました。
で、色々検索してみたのですが、適当な物が見つからず、自分で作りました。
似たような物は、iOSSocialとかがあります。
簡単に言うと
[PhotoSubmitterManager submitPhoto:photo];
ってやると、あらかじめ設定したサービスに写真がアップロードされるライブラリです。
また、
https://github.com/kent013/tottepost/raw/master/AppStore/screenshot4_en.png:image:w200:left
https://github.com/kent013/tottepost/raw/master/AppStore/screenshot5_en.png:image:w200
のような設定を
PhotoSubmitterSettingTableViewController *settingViewController_ = [[PhotoSubmitterSettingTableViewController alloc] init]; settingViewController_.delegate = self; settingNavigationController_ = [[UINavigationController alloc] initWithRootViewController:settingViewController_]; [self presentModalViewController:settingNavigationController_ animated:YES];
というコードだけで出す事ができます。認証もこの画面からできるので、サービスのON/OFFや認証などのコードはほとんど書く必要がありません。
PhotoSubmitterについて
ソースコードは、
kent013/PhotoSubmitter · GitHub
にあります。
サンプルコードは、
です。tottepostはPhotoSubmitterの全機能を使っています。またPhotoSubmitterExampleは最小限の機能だけ使っています。
上記、リポジトリのREADME.mdに細かいことは書いてありますが、
[[PhotoSubmitterManager submitterForType:@"facebook"] login];
とすると、渡されたTypeに応じたログイン画面が表示されます。すでにログインされている場合には何もおきません。現在のところサポートしているのはFacebook/Twitter/Flickr/Dropbox/Picasa/Evernote/Minus/Mixi/Fotolifeの9つです。
[[PhotoSubmitterManager submitterForType:@"dropbox"] login]; [[PhotoSubmitterManager submitterForType:@"evernote"] login];
として、必要なサービスをONにしていく事ができます。サービスをONにしたあと、
PhotoSubmitterImageEntity *photo = [[PhotoSubmitterImageEntity alloc] initWithData:data]; [PhotoSubmitterManager submitPhoto:photo];
のようにすると、ONにしたサービス全部に写真がアップロードされます。
できればtottepostから独立させてサービスをプラグイン化できるようにしたいのですが、いまいちうまい実装が思い浮かばないです…