はじめに
Twitter連携アプリを作成しようとして、Swifterというライブラリを使用しています。
Twitterでログイン認証後にアプリ側でコールバックを受けた場合に呼ばれる関数の記述場所が変わっていたので、メモのため記録に残しておきたいと思います。
環境
Xcode 12.5.1
iPhone 8 + iOS 15
だいぶ古いiPhoneを使用していますが、新しく購入するには楽天モバイルがオススメです。
SceneDelegate上にコールバックUrlを設定
iOS13より、SceneDelegate.swiftが追加された。これにより、これまでAppDelegateに記述されていたコードの多くが、SceneDelegateに移行されます。
iOS13より前では、コールバックを受ける場合の処理はAppDelegateに
import Swifter func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { return Swifter.handleOpenURL(url, callbackURL: URL(string: "swifter-{Consumer API key}://")!) }
と記載していれば良かったのですが、iOS13以降ではここは呼ばれません。
代わりに、ScheneDelegateに
import Swifter // callback urlの設定 func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>){ Swifter.handleOpenURL(URLContexts.first!.url, callbackURL: URL(string: "swifter-<ConsumerAPIkey>://")!) }
と記載する必要があるので要注意です。
Swifterのドキュメントの方が更新されてなく、SceneDelegateの説明もなかなか多くはないのですごく悩みました。
プログラミング作成はやはりある程度お手本となるソースががると効率よく勉強できますよね。
Udemyで紹介されているこちら↓のSwift講座は価格が安く、そして
- カメラ投稿
- 日出時刻検索
- ARアプリ
- AIアプリ
といったiPhoneならではの機能を使ったアプリをさくっと作れちゃうので、Swiftの初心者の方にはオススメですよ。私もあとでチェックしてみます!
【6日で速習】iOS 13アプリ開発入門決定版 20個のアプリを作って学ぼう(Xcode 11, Swift 5対応中)