Xamarin.FormsとCoreTweetでTwitterクライアントアプリを作ってみる
CoreTweetがすごい
「たったこれだけのコードでAndroidからツイートできるってすばらしいXamarinすき」
なんていうTweetを見て、マジですかい?
と触発されてつい作ってしまいました。
実際、あれだけのコードでTweetできるし、StreamingAPIで待機待ち発生させるのも1ラインでかけてしまうという怖ろしさ。
すごいです。
実際に作ってみた
んで、Xamarin.Formsで実際に作ってみました。
GitHubにソースを置いてあります。
uwpで作り始めて、読み書きと見栄えの調整でのべ5時間ほど…。
簡単にできてしまいました。
んで、同じ時間くらいかけてiOSとAndroidで動作確認をするという。
そっちにかかった時間の方が長いくらい。
またなんで改めてTwitterクライアント?
携帯端末でStreamingAPI対応をがっつり謳っているものがさらっと見た限りではなさそうだったから、というのが理由の一つです。
つまり、自分の端末でStreamingで流れてくるものを見たかったんですね。
でも、そんなネットワークにずっと繋いでいるようなことをすると、通信料とバッテリーをかなり消費しそうですが…。
ソースの解説
解説ってほどでもないですが。
ポイントポイントで。
Twitter用の設定について
まず、上記のGitHubのページにも書きましたが、TwitterのConsumer KeyとConsumer Secretは書いてません。
namespace NicoNocoApp.Common
{
class SystemSettings
{
public const string ConsumerKey = "xxx";
public const string ConsumerSecret = "xxx";
}
}
こんな感じでファイルを作ってください。
プロジェクトについて
各プラットフォームごとにプロジェクトを作っていますが、入口のみで実際のコードは NicoNocoApp.Common
にまとまっています。
また、画像は NicoNoko.Resources
にまとめました。
NocoNocoApp.Common
はPCL、 NicoNoco.Resources
は共有プロジェクトです。
他は拡張子でプラットフォームをみてください。
Twitterに繋がっている部分
StreamingAPIで繋がっている部分は以下になっています。
if (_StreamingMessage == null)
{
_StreamingMessage = this.Tokens.Value.Streaming.UserAsObservable().Publish();
_StreamingMessage.OfType<StatusMessage>().Subscribe(x =>
{
Device.BeginInvokeOnMainThread(() =>
{
TweetList.Insert(0, x);
});
});
}
Publish
で接続オブジェクトを作って、 OfType
でふるい分けし、 Subscribe
で監視する、と。(2016/04/21追記 ←間違えています。コメント欄を確認してください)
簡単!すごい!CoreTweet万歳!
見て分かる通り、エラーチェックなどは一切行っていません(笑)
あと、認証時など状態監視にReactivePropertyを使いまくっています。
画面など
画面やアプリの動作自体はXamarin.Formsにおんぶに抱っこしてもらってます。
Twitterクライアントくらいの画面ならこれでまんま賄えますね。
んで、XAMLを使わずにコードで画面を作っています。
上でも書きましたが、状態監視にReactivePropertyを、また環境設定の保存用にXamarin.Pluginsの中からSettingsを使っています。
簡単にアプリが作れます。
Xamarin.FormsとNuGetで使えるライブラリを使えばとっても楽にアプリが作れます。
あなたも使ってみませんか。