Myuon Corp. Advent Calendar 2016 2日目です。
LINE Notify とは?
2016年9月29日、技術者向けカンファレンス「LINE DEVELOPER DAY 2016」にて、LINEと外部アプリケーションなどの通知連携サービス「LINE Notify」が発表された。GitHub、IFTTT、Mackeral などと連携ができる。
Webサービスからの通知をLINEで受信
Webサービスと連携すると、LINEが提供する公式アカウント"LINE Notify"から通知が届きます。
複数のサービスと連携でき、グループでも通知を受信することが可能です。
らしい。これをiOSから叩いてみようというのが今回試したいこと。
(基本的にはWebサービスから利用されることを想定しているのだろうか?)
LINE Notify API Document を読んでみる
OAuth2
認証は OAuth2 。
API 全体の流れと、実装の必要な箇所について
「連携サービス」 の箇所を実装すれば良さそうだ。
API の一覧
- 認証系
- GET https: //notify-bot.line.me/oauth/authorize
- POST https://notify-bot.line.me/oauth/token
- 通知系
- POST https://notify-api.line.me/api/notify
- GET https://notify-api.line.me/api/status
- POST https://notify-api.line.me/api/revoke
APIは5つだけ。
早速やってみた
アクター
- 自前iOSアプリ
- 自前作成のWebページ
- LINE側のWebページ
流れ
- アプリ内のボタンをタップWebViewで上記で作成したページを表示(自前iOSアプリ)
- Login with LINE リンクをタップ(自前作成のWebページ)
- LINE のログイン画面が表示される(LINE側のWebページ)
- 送信先グループトークを選択(LINE側のWebページ)1
- 指定したリダイレクトURLに access_token がセットされた形でリダイレクトされる(自前作成のWebページ)2
- 取得した access_token を使用してメッセージをポスト(自前iOSアプリ)
1. サービスの作成
まずはサービスを作って ClientId、ClientSecret を取得する
「今から帰ることを伝える」こんなのサービスを作った。( 「Gome」 の由来は 「Go home」 をギュッと縮めたもの。笑わないでくださいね...)
2. とりあえず curl でメッセージを送信してみる
- authorize API で code を取得
- code を使用して token API を叩いて token 取得
- notify API で メッセージを送信
$ curl -X POST -H 'Authorization: Bearer [access_token]' -F 'message=foobar' https://
notify-api.line.me/api/notify
{"status":200,"message":"ok"}
3. OAuth2 authorization endpoint へリダイレクトする HTML作成
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Welcom Gome</title>
</head>
<body>
<h1>Welcom Gome</h1>
<a href="https://notify-bot.line.me/oauth/authorize?response_type=code&client_id=[client_id]&redirect_uri=[redirect_uri]&scope=notify&state=[state]">Login with LINE</a>
</body>
</html>
(ホスティング先はお手軽に firebase を使用した)
4. iOS アプリを作成
ソースコードはメインとなる ViewController.swift を gist にアップロードしました。ご参考まで。
https://gist.github.com/RyoAbe/1ceae86df6ec5fea10a81963a4905a42
完成したのがこちら
まとめ
手軽に通知ができて良いですね。今回作ったものは近日中に Apple に申請を出す予定。
次は LINE Bot 触ってみたい。
明日は、 @YasuakiNakazawa さんです。