はじめに
既存のLIFFアプリにShareTargetPickerを導入する方法を説明します。
GitHubはこちら。
ShareTargetPickerとは?
以下が参考になります。
Share Target Pickerがリリースされ、LIFFアプリからのメッセージ送信が大幅に強化されました。
Share Target Pickerとは、LIFFから送信先を選んでメッセージを送信することが出来る機能です。
これにより、
・トークルームやグループから開かれなかった場合でも、メッセージを送信できる
・LIFFアプリをLINE上で開いた場合だけではなく、ブラウザから開いた場合もメッセージを送信できる
・自分以外の友だちや自分が入っていないグループにもメッセージを送信させることができる
といったことが可能になります。
サンプル
https://yagi-eng.github.io/liff-reservation-githubpages/
送信ボタンをクリックするとLINEの友だち選択画面が表示され、テキストの送信先を選択できます。
導入
LINE Developersの変更
![stp.PNG](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F113263%2Fad748d19-c68a-c29b-7f49-40979df02907.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=96965a62a6e783ee27bd884d2e1dff0f)
実装
以下のQiita記事で作成したLIFFアプリにShareTargetPickerを導入します。
【LIFF入門?】LIFFでLINE Offical Account(旧LINE@)上に予約フォームを作成する
以下のようにliff.jsを修正します。
gitのdiffは こちら です。
diffの方が何を追記すれば良いかわかりやすいかも。
$(document).ready(function () {
var liffId = "(自分のLiffIdを入力)";
initializeLiff(liffId);
})
function initializeLiff(liffId) {
liff
.init({
liffId: liffId
})
.then(() => {
if (!liff.isInClient() && !liff.isLoggedIn()) {
window.alert("LINEアカウントにログインしてください。");
liff.login();
}
})
.catch((err) => {
console.log('LIFF Initialization failed ', err);
});
}
function sendMessage(text) {
if (liff.isInClient()) {
sendMessages(text);
} else {
shareTargetPicker(text);
}
}
function sendMessages(text) {
liff.sendMessages([{
'type': 'text',
'text': text
}]).then(function () {
liff.closeWindow();
}).catch(function (error) {
window.alert('Failed to send message ' + error);
});
}
function shareTargetPicker(text) {
liff.shareTargetPicker([{
'type': 'text',
'text': text
}]).catch(function (error) {
window.alert('Failed to send message ' + error);
});
}
LINEトークから開いた場合は sendMessages
を使ってそのトーク上にメッセージが送信されるように、LINEトーク以外から開いた場合は shareTargetPicker
を実行するようにしました。
こうすることで、既存機能に影響なく導入することができます。
感想
LINE上で動作するものを作るの楽しいです。
これで仕事取れるようになるといいな。。