TwitterKitを使って連携すると期待している通りに動かない
TwitterKitをつかってTwitter連携処理をかくとそれ自体は簡単にできるのだけれど、
ただ、アプリを再起動したときに再度連携が必要になってしまって...
どうやって保存するの??とかって思ってありゃこりゃしてしまったので、そこら辺の話。
TwitterKitつかって連携するとアプリ再起動時にまた連携が必要なんだが!?
です
環境
- TwitterKit v3.3.0
TwitterKitとは
Twitterのありゃこりゃをよしなにしてくれる良い奴(笑)
提供している機能以外にも、REST APIを自分でも一応たたけます
問題
TwitterKitをとおして連携処理を実行すると、
自動でTwitter公式アプリが立ち上がって、連携画面に遷移して連携ができると...。
ユーザが連携を許可するとアプリにもどってきて、以降は許可された権限に従っていろいろできるようになりますと...。
ココらへんの連携まわりが、お手軽に実装できていいのだけれど...
いったんアプリを終了して、も1回起動すると未連携状態に戻ってしまって...
起動するたびに連携しないといけないんだが!?!?っていう問題が発生
コード
実装している連携まわりをざっくりかくと
TWTRTwitter.sharedInstance().start(withConsumerKey: "Twitter Consumer Key", consumerSecret: "Twitter Consumer Secret")
if let session = TWTRTwitter.sharedInstance().sessionStore.session() {
// 連携済み
} else {
TWTRTwitter.sharedInstance().logIn { (session, error) in
if let error = error {
print(error)
}
}
}
もちろんAppDelegate.swift
の方には
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return TWTRTwitter.sharedInstance().application(app, open: url, options: options)
}
を忘れずに...。
多分これだけで問題ないはず!(ですよね?
実際できるしこれで...
(アプリ再起動したら連携状態が維持できないだけで。。
解決?
他のアプリも同じようにできているので...なんで?とかおもって、
ちょっとCocoapodsでTwitterKitいれみたのです。
(このプロジェクトはCarthageで入れてた)
コードを一ミリも変更していないのに、期待している通り動いた。
ちゃんとアプリ再起動しても連携状態を保持していた...。
コードを変更せずにまたCarthageで入れた方にもどして、連携周りやりなおすとやっぱり保持されない
なにこれ????😇
ついったーさん??なにこれ???????
ってことで、なんかよくわからんけど、Carthageでいれるのやめたほうがいいかも....
さんぷる
サンプルプロジェクトあげてみたので、暇な人で気になる人はお試しあれ
git clone
してプロジェクト起動後BuildSettingにConsumerKeyとConsumerSecret設定- masterブランチ:CarthageでTwitterKitいれたもの
- podsブランチ:CocoapodsでTwitterKitいれたもの
- どっちもまるっと上げてるので、
carthage update
とかpod install
とかしなくてもイケるはず
- どっちもまるっと上げてるので、
なにかコードレベルで不手際があれば是非おしえてほしいです..🙏
つかれた....