LIFF v2.3.0をリリースしました。
LIFF v2.3.0における変更点は以下のとおりです。
以前お知らせしたとおり、LINE Developersコンソールの[エンドポイントURL]に入力したパス(/path)およびクエリパラメータ(?key=value)を、LIFFアプリで利用できるようになりました。
設定を変更するまでは既存のLIFFアプリへの影響はありません
既存のLIFFアプリで新仕様を利用する場合は、LINE Developersコンソールで設定を変更する必要があります。設定を変更するまでは、仕様変更の影響を受けません。

新仕様を利用するには、LIFFアプリの[LIFF URLの追加情報の処理方法]を「連結」に設定します。
LIFFアプリが新仕様に対応していない場合は、設定を変更しないでください。「置換(後方互換性モード)」に設定されている場合は、仕様変更の影響を受けません。
詳しくは、『LIFFドキュメント』の「LIFFアプリを開く」を参照してください。
liff.permanentLink.createUrl()メソッドを実行したとき、現在のページのURLが[エンドポイントURL]に指定したURLで始まらない場合に、例外が発生します。
javascripttry {
const myLink = liff.permanentLink.createUrl()
}
catch (err) {
console.log(err.code + ':' + err.message);
}
特に[LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」のときは、[エンドポイントURL]に指定したパスやクエリパラメータ(/2020campaign/?key=value)が、2次リダイレクト先に含まれないことがあります。
その場合、liff.permanentLink.createUrl()メソッドが上記の条件を満たすため、パーマネントリンクを取得できません。
詳しくは、『LIFF v2 APIリファレンス』の「liff.permanentLink.createUrl()」を参照してください。
2020年4月21日にお知らせしたとおり、liff.shareTargetPicker()の送信結果を取得できるようになりました。
仕様変更前は、ターゲットピッカーを表示できたかどうかをLIFFアプリが確認できましたが、その後、メッセージを送信できたかどうかは確認できませんでした。
仕様変更後は、メッセージを送信できたかどうかを確認できるため、ユーザーの状況に合わせて、LIFFアプリの挙動を変更するように実装できます。
注意
- この仕様変更により、
liff.shareTargetPicker()の戻り値に変更があります。 - ユーザーがLINE 10.3.0~LINE 10.10.0を使用している場合は、この仕様変更の影響を受けません。
以下のように、ユーザーが使用しているLINEバージョンによって戻り値を処理することをお勧めします。
javascriptif (liff.isApiAvailable('shareTargetPicker')) {
liff.shareTargetPicker([
{
'type': 'text',
'text': 'Hello, World!'
}
])
.then(function (res) {
if (res) {
// succeeded in sending a message through TargetPicker
console.log(`[${res.status}] Message sent!`)
} else {
const [majorVer, minorVer] = (liff.getLineVersion() || "").split('.');
if (parseInt(majorVer) == 10 && parseInt(minorVer) < 11) {
// LINE 10.3.0 - 10.10.0
// Old LINE will access here regardless of user's action
console.log('TargetPicker was opened at least. Whether succeeded to send message is unclear')
} else {
// LINE 10.11.0 -
// sending message canceled
console.log('TargetPicker was closed!')
}
}
}).catch(function (error) {
// something went wrong before sending a message
console.log('something wrong happen')
})
}
詳しくは、『LIFF v2 APIリファレンス』の「liff.shareTargetPicker()」を参照してください。
liff.sendMessages()に不正なパラメータを渡した場合、LiffErrorのエラーコードで400が返されていました。仕様変更後は、400の代わりにINVALID_ARGUMENTが返されます。
なお、エラーコードによって処理を分岐していない場合は、仕様変更の影響を受けません。
仕様変更前:
javascriptliff.sendMessages([
{
type: 'text',
text: 'Hello, World!'
}
])
.then(() => {
console.log('message sent');
})
.catch((err) => {
// Returns "400" if invalid arguments are passed
if (err.code === "400") {
console.log("message format error!");
}
});
仕様変更後:
javascriptliff.sendMessages([
{
type: 'text',
text: 'Hello, World!'
}
])
.then(() => {
console.log('message sent');
})
.catch((err) => {
// Returns "INVALID_ARGUMENT" if invalid arguments are passed
if (err.code === "INVALID_ARGUMENT") {
console.log("message format error!");
}
});
詳しくは、『LIFF v2 APIリファレンス』の「エラー内容」を参照してください。