🤮
【iOS】Swifterを使ってTwitterに動画を投稿する手順
Swiftenを使用する理由
iOSでのTwitter投稿時にファイルをアップロードする場合、AndroidのようにUniversal Links(DeepLink)での投稿難しいようです。
UIActivityViewController での実装が推奨されているようですが、Twitterのみに投稿をしたい場合( 他のサービスには投稿させたくない )は自前実装する必要があるようです。 以前まではTwitterKitを使っていましたが、メンテがされなくなったのとUIWebViewを利用しているらしく、使用していると将来リジェクトされる可能性がとても高いです。
代替えとしてSwifterを利用することにしました。 動画ファイルをアップする必要があったのですが、ハマったのと日本語解説、英語解説ともにファイルアップロード周りがあまり検索しても出てこなかったのでメモです。
動画をアップロードしようとすると一癖あり?
ファイルを添付してTweetするメソッドもあるのですが、画像、GIF画像のみに対応しているらしく、動画はファイルアップロードを実行してからファイルのKeyを追加してツイートする対応が必要でした。
swifter.postMultipartMedia(fileData, type: MediaType.mov, category: MediaCategory.video) { [self] responseJson in
//成功時のコード
guard let mediaId = responseJson["media_id_string"].string else { return }
} failure: { error in
//エラー時のコード
}
swifter.postTweet(status: self.status, mediaIDs: medids) { responseJson in
//成功時のコード
} failure: { error in
//エラー時のコード
}
postMultipartMediaのレスポンスにresponseJson["media_id_string"]
を指定することでmedia_idの取得が可能です。 postMultipartMediaはcategoryにvideo
、typeに動画の拡張子を指定。「mp4」と「mov」に対応。 mediaIdをStringの配列に入れてpostTweetのmediaIDs
に指定して投げると成功。
シンプルそうだけど調べても全然出てこなかったのでライブラリのコード見たほうが早かったなと・・・。
Discussion