【Android】定期的にサイト情報を取得5
~LINEで新着物件をお知らせ~
前回の続きです。
物件情報に差分があった場合に通知を行います。
通知の方法として、メールでの通知を思いついて実装しましたが、いくつものメールを受信する中で物件情報のメールが埋もれてしまい、使い勝手が悪いと感じました。
そのため、LINEを使った通知を実装します。
LINEを使った通知の詳細は別記事で記載しますが、最終的には以下のようにPOSTを実行することで通知可能です。
curl -v -X POST https://api.line.me/v2/bot/message/push -H “Content-Type: application/json” -H “Authorization: Bearer {チャンネルアクセストークン}” -d “{ \”to\”:\”ユーザーID\”,\”messages\”:[ {\”type\”: \”text\”,\”text\”: \”Hello, world!\”}] }”
上記のPOST方法はWindowsのコマンドプロンプトから送信する方法なので、これをAndroid上で動くようにプログラミングします。
POSTを送信するには以下のように記述します。
//LINE Message APIのプッシュ用URL
val post_url = URL(“https://api.line.me/v2/bot/message/push”)
//POST準備
val connection_post = post_url.openConnection() as HttpURLConnection
connection_post.requestMethod = “POST” // POSTで通信
connection_post.doOutput = true // true に設定した場合、アプリケーションが URL 接続にデータを書き込むことを示す
connection_post.setRequestProperty( // ヘッダ情報を記述
“Content-type”,
“application/json; charset=utf-8”
)
connection_post.setRequestProperty(
“Authorization: Bearer {LINEチャンネルアクセストークン}”,
“”
)
connection_post.setChunkedStreamingMode(0)
connection_post.connect()
// データ
val sbody_Json = “””{ “to”:”LINEユーザーID”,”messages”:[ {“type”: “text”,”text”: “LINEに送信したい文章”}] }”””
val body_post = sbody_Json.toByteArray()
// Bodyの書き込み
connection_post.outputStream.write(body_post)
connection_post.outputStream.flush()
connection_post.outputStream.close()
//POST実行
val responseCode = connection_post.responseCode
val post_url = URL(“https://api.line.me/v2/bot/message/push”)
//POST準備
val connection_post = post_url.openConnection() as HttpURLConnection
connection_post.requestMethod = “POST” // POSTで通信
connection_post.doOutput = true // true に設定した場合、アプリケーションが URL 接続にデータを書き込むことを示す
connection_post.setRequestProperty( // ヘッダ情報を記述
“Content-type”,
“application/json; charset=utf-8”
)
connection_post.setRequestProperty(
“Authorization: Bearer {LINEチャンネルアクセストークン}”,
“”
)
connection_post.setChunkedStreamingMode(0)
connection_post.connect()
// データ
val sbody_Json = “””{ “to”:”LINEユーザーID”,”messages”:[ {“type”: “text”,”text”: “LINEに送信したい文章”}] }”””
val body_post = sbody_Json.toByteArray()
// Bodyの書き込み
connection_post.outputStream.write(body_post)
connection_post.outputStream.flush()
connection_post.outputStream.close()
//POST実行
val responseCode = connection_post.responseCode
このプログラムを実行すると、以下のようにラインにメッセージを送信することができます。
※テストとして、メッセージは適当に入れています。このメッセージを物件情報の文字にすれば、ラインで新着物件のお知らせを受信することができます!

以上です。
これまでの記事で5回に渡って、以下の①~③の流れで動作するサイトアクセスプログラムを作成しました。
ラインでの通知以外にも、メール通知やアプリでの通知など、いろいろな通知手段が使えると思います。
次回は、スマホがスリープ状態でも①~③で実行するようプログラミングしていきたいと思います。
