kurotyannの覚え書き

iOSのこととか、たまにRailsとか。

TwitterKitのサポートが10月末に終了するのでSwifterに乗り換えた話

これはなに

  • 2018年10月31日をもってTwitterKitのサポートが終了する
  • TwitterKitからの移行先をSwifterにした
  • Swifterへの移行方法と、移行以外でハマったこともあったので書いた

TwitterKitのサポートが終了

blog.twitter.com

とても残念ですが2018年10月31日をもって、GitHub上でiOSAndroidとUnityを対象にした本オープンソースに関する質問や問題を受け付けることを終了します。

移行先をSwifterにした理由

  • Swift製でcocoapodsとcarthageに対応してた
  • Twitter認証とつぶやきの投稿のみを実現したくSwifterはそれが可能だった

github.com

ちなみに、Twitterの公式ページにはTwitter関係のOSSの一覧があり、Swifterはそこで紹介されている

ざっくりとしたSwifterへの移行対応

  • 認証処理とつぶやきの投稿をするクラスをGistにおいた
  • 必要ないかもしれないが、Objective-C からも使えるようにした

SwifterWrapper.swift · GitHub

認証処理

// AppDelegate の didFinishLaunchingWithOptions で処理すると思う
SwifterWrapper.share.setup(consumerKey: key, consumerSecret: secret)
func authorize(controller: UIViewControlller) {
    /*
      controller が SFSafariViewControllerDelegate に準拠していると
      Twitterのログイン画面がSFSafariViewControllerで表示される
     */ 
    share.login(controller: controller, success: { (userID, screenName, token, tokenSecret) in
        // 認証成功
    }, failure: { (error) in
        // 認証失敗
    })
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    return SwifterWrapper.handleOpen(url: url)
}

つぶやき投稿

// mediaはつぶやきの添付画像とか
SwifterWrapper.share.postTweet(status: text, media: media)

Swifterへの移行以外でハマりそうなところ

  • callback URLsが6月ごろのGDPR対応でホワイトリスト方式になっており、管理画面のcallback URLsと完全に同じURLでないと正常に動作しない
  • Twitterの公式ページにも説明がある
  • Twitterの公式ページを要約すると、callback URLsには下記のURLを入力するように推奨されている
    • Android twittersdk://
    • iOS twitterkit-CONSUMERKEY://
  • iOSの場合、URLSchemeで帰って来たとき、なぜかCONSUMERKEYが全て小文字になっているので不思議(理由を知っている人が入れば教えてください 🙇‍♂️ )

まとめ

  • TwitterKitからの移行先をSwifterにした
  • Twitterは今後どう発展していきたいのだろうかと少し考えたりもした
  • 直接関係はないけど、Tweetbotのテーマの切り替えが素晴らしい
    • おそらくすべての画面で2本指の上下スワイプでテーマを切り替えられる