アプリに「LINEで送る」を実装する
こんな感じのボタンからメッセージをLINEアプリへダイレクトに送信します。
Webサイトに設置したい場合は、以下の公式サイトで確認できます。 media.line.me
今回は、OSの共有機能を利用するのでもなく、アプリから直接LINEを起動してメッセージを投稿する方法です。
実装のポイント
- LINEのDeveloper登録は必要ない
- SDKなどの導入も必要ありません
- URL Scheme(
line:/msg/text
)を利用するline://msg/text/<message>
の形式でURLを作成する
- URLエンコードする
- 日本語メッセージの送信には、URLを作成するためエンコードが必要です。
- 改行コードを指定する
- 受信した相手に見やすい表示にする
- iOSでは送信メッセージの確認ができない
- 送信前にメッセージの確認・編集ができないため、メッセージ内容には注意が必要です。
iOSの実装
Info.plistへの許可設定
iOS9からアプリ内で実行するURL SchemeをプロジェクトのInfo.plistに設定する必要があります。
Key: LSApplicationQueriesSchemes
value: (配列でURL Schemeを指定)
URLの作成とopen
- Swift 4.0
let urlscheme: String = "line://msg/text" let message = "iPhone X\n\n私たちはずっと変わらないビジョンを持ち続けてきました。\nすべてがスクリーンのiPhoneを作ること。\n\nhttps://www.apple.com/jp/iphone-x/" // line:/msg/text/(メッセージ) let urlstring = urlscheme + "/" + message // URLエンコード guard let encodedURL = urlstring.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed) else { return } // URL作成 guard let url = URL(string: encodedURL) else { return } if UIApplication.shared.canOpenURL(url) { if #available(iOS 10.0, *) { UIApplication.shared.open(url, options: [:], completionHandler: { (succes) in // LINEアプリ表示成功 }) }else{ UIApplication.shared.openURL(url) } }else { // LINEアプリが無い場合 let alertController = UIAlertController(title: "エラー", message: "LINEがインストールされていません", preferredStyle: UIAlertControllerStyle.alert) alertController.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default)) present(alertController,animated: true,completion: nil) }
- 改行コードは「
\n
」です - URLはエンコードします
- openURLはiOS10からメソッドが異なります
- 「LINE」アプリがインストールされていない場合を考慮します
画面遷移
アプリからURL Scheme実行 | LINEアプリが起動して送信先選択 | 送信完了 |
---|---|---|
Androidの実装
URLの作成とStartActivity
- java 8
@Override public void onClick(View view) { // URL Scheme String urlScheme = "line://msg/text"; // メッセージ String message = "iPhone X\n\n私たちはずっと変わらないビジョンを持ち続けてきました。\nすべてがスクリーンのiPhoneを作ること。\n\nhttps://www.apple.com/jp/iphone-x/"; // メッセージをURLエンコード String encodedMsg = null; try { encodedMsg = URLEncoder.encode(message, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (encodedMsg != null) { Uri uri = Uri.parse(urlScheme + "/" + encodedMsg); Intent i = new Intent(Intent.ACTION_VIEW,uri); startActivity(i); } }
- LINEアプリのインストール有無は
PackageManager
などで事前にチェックする必要があります - 改行コードは「
\n
」です - URLはエンコードします
画面遷移
アプリからURL Scheme実行 | LINEアプリが起動して送信先選択 | 送信メッセージの内容を確認可能 | 送信完了 |
---|---|---|---|
デザイン
「LINEで送る」のボタン画像は公式のサイトでリソースを配布しています。 https://media.line.me/ja/how_to_install#lineitbutton
まとめ
今回利用したURLスキームは、ネット上の情報を利用して動作確認まで行えました。
しかし公式のURLスキーム情報にたどり着けなかっため、今後利用できなくなる可能性もあります。
ともあれ、Developer登録やSDKの導入なしで利用できるURLスキームで連携できるのは便利でした。