TwitterでリプライやRTが来たときにYOで通知してくれるのを実装しました
毎日何かしらはやってはいるんですが、記事にできるような区切りがつかないのでなかなか難しいものでした。
今回は、Twitterの通知を独自実装するのに際して、とりあえずYOで通知してくれるようにと思い実装しました。
YOはフレンドとして登録した特定の相手にYOとだけ送る事ができるハイコンテクスト(?)なサービスです。yoserverisdownなどのサービスもあり当初は盛り上がっていたのですが、最近では下火、ですが、APIを公開しているため、使ってみる事にしました。
http://dev.justyo.co/でログインし、YOを送る側のアカウント(アプリケーション)を登録し、APIキーを取得します。
あとはでapi_tokenとusernameを指定してPOSTするだけです。
require 'net/http' require 'uri' uri = URI.parse('http://api.justyo.co/yo/') params = {api_token: API_TOKEN, username: USERNAME} Net::HTTP.post_form(uri, params)
という形でYOすることができたので、TwitterのStreamingAPIと組み合わせて、YO通知を実装します。
@clientはhttp://yutaszk23.hatenadiary.jp/entry/2014/06/05/142337の通りに宣言されたStreamingAPI用のClientとします。
require 'twitter' require 'net/http' require 'uri' require 'yaml' def justyo uri = URI.parse('http://api.justyo.co/yo/') puts Net::HTTP.post_form(uri, {api_token: @YO_TOKEN, username: @YO_USERNAME}) end def stream @client.user do |status| if status.is_a?(Twitter::Tweet) # reply判定 if status.in_reply_to_screen_name == @user_screen_name justyo end # RT判定 if status.retweeted_status.user.screen_name == @user_screen_name justyo end end # favorite判定 if status.is_a?(Twitter::Streaming::Event) && status.name == :favorite justyo end end end @YO_TOKEN = YOUR_API_TOKEN @YO_USERNAME = YOUR_YO_NAME stream
これでこのプログラムが動いている間は(手元のPC上でOK)通知がYOで来るので、是非試してみてください。永続化したければPCを付けっぱなしにするかサーバで動かすか、で。
これで通知のないTwitterクライアントでも大まかな通知を受け取る事が出来るようになりました(公式併用すればいいのですが)。
これからはPush通知で詳細な内容を通知されるようにしたいのですが、ネイティブ側をいじらなければならないので厳しそうです……まずはAndroidからがんばってみます。