【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

このプログラムを実行すると、以下のようにラインにメッセージを送信することができます。

※テストとして、メッセージは適当に入れています。このメッセージを物件情報の文字にすれば、ラインで新着物件のお知らせを受信することができます!

以上です。

これまでの記事で5回に渡って、以下の①~③の流れで動作するサイトアクセスプログラムを作成しました。

ラインでの通知以外にも、メール通知やアプリでの通知など、いろいろな通知手段が使えると思います。

次回は、スマホがスリープ状態でも①~③で実行するようプログラミングしていきたいと思います。

※サイトに迷惑をかけないよう、アクセス回数は1時間に1回程度にしてください!