Twitter Kit Android
Emergency Situation Sharing Tool

Abstract#

This sample application seems to provide various good functions such as real time tweet search and notification. They should be studied.

Topics#

Target->[1]

全般#

このサンプルは、Twitter社の公式なものであるが、サポートをやめるというアナウンスが。。。[2]
SampleApplication.javaでLeakCanary.install(this);って発見。どうもメモリリークを探すプログラムらしい。

認証#

これはいつOauthしてるんだろう。GMAILの時のようにAndroidのAccoutManagerを使っているのか?TwitterAuthClientというのを使っているようだが。。 Twitter.initialize(this);はSampleApplication.javaで実行している。
app/twitter.propertiesを呼び出すのはいつ?gradleに記述されているように見える。ESSTが使っているkeyを確認したほうがいい。

Search Tweet#

いろいろとTweetを取りに行くのにも種類がある。
Oauthとはどういう関係か?
だれのTweetを持ってきているのか?なんかゲストユーザで#twitterでの検索範囲を表示しているように見える。もしかしてOauthしなくても取得できるTweetがあるのか?
com.twitter.sdk.android.tweetuiパッケージのSearchTimelineクラスをどう使うかがキーっぽい。これは、最終的にはどこにライブラリがあるのか?->MAVENのレポジトリにちゃんとありそう。ってESSTですでに使っている。
listviewにTweetTimelineListAdapterをセットしているところまでわかるが、どこでTweetを検索しているんだろう。そうだscreenname変えてみよう。
サンプルアプリ動かしてもSearchTimelineは動いていないように見える。UserTimelineFragment.javaのUserTimelineクラスを調べよう。
UserTimelineのBuilderのスクリーンネームをyurekuruにすると結構出てくる。これをESSTに適用したい。アダプターをセットしてから何をしたらいいかわからない。。。何をキックに探しに行くんだろう。Listに追加する動作はどう記述するのか?
ちなみにFragmentにadapterをセットする瞬間は、サイズ0.別スレッドで下記のStatusesServiceのGETコマンドが発信され、受け取ってからこのアダプター経由で設定するのだろう。そのタイミングはいつだ。。どう捕まえればいいのか。
StatusesServiceというインタフェースがある。この中で以下のGETコマンドが発信されている。
D/OkHttp: --> GET https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended&include_cards=true&cards_platform=TwitterKit-13&screen_name=nasa&count=30&trim_user=false&exclude_replies=true http/1.1
UserTimeline.createUserTimelineRequest()でgetStatusesService()が呼び出されている。このリクエストの帰りにTweetのリストがあるように見える。どこから呼ばれるのか?検索かけてもUserTimelineからしか呼ばれていないように見える。このcreateUserTimelineRequest()はprivateメソッド。

References#

  1. [#1]Twitter, Inc., 2018年5月あたり, Twitter Kit for Android, https://github.com/twitter/twitter-kit-android
  2. [#2]Neil Shah, 2018年10月30日, Discontinuing support for Twitter Kit SDK, https://blog.twitter.com/developer/en_us/topics/tools/2018/discontinuing-support-for-twitter-kit-sdk.html