LIFF新機能の「liff.id」を試してみた
この記事はすごくなりたいがくせいぐるーぷGWアドベントカレンダー3日目の記事です。
すごくなりたいがくせいぐるーぷ | GWアドベントカレンダー
はじめに
LIFFにliff.id
というプロパティが追加されたので仕様などを調べてみました。
https://developers.line.biz/ja/news/2020/04/30/liff-get-line-version-and-id-released/
機能
liff.init()に渡したLIFFアプリID(String型)を保持するプロパティです。
liff.init()を実行するまでは、nullです。
https://developers.line.biz/ja/reference/liff/#id
と公式リファレンスにおる通り、どうやらliff.initで指定したliffIdを取得できるみたいです。
とりあえず実装してみた
まずは先にliff.init
をしてからliff.id
を出力してみます。
liff
.init({
liffId: '1234567890-abcedfgh'
})
.then(() => {
console.log('さくせす', liff.id);
})
.catch((err) => {
console.log(err.code, err.message);
alert('エラーが発生しました');
});
console
さくせす 1234567890-abcedfgh
次に、liff.init
をする前にliff.id
を出力してみます。
console.log(liff.id);
liff
.init({
liffId: '1234567890-abcedfgh'
})
.then(() => {
console.log('さくせす');
})
.catch((err) => {
console.log(err.code, err.message);
alert('エラーが発生しました');
});
console
null
確かにnull
が返ってきました。
用途
liffIdを取得するという用途での使い方は思いつきませんが、liff.init
をする前にliff.id
を取得するとnull
が返ってくるという仕様を使えば、まだliff.init
をしていないのかどうかを判定できます。
僕は今まで、liff.init
をする前にliff.isLoggedIn()
をするとエラーを吐くという仕様を使い、以下のようなコードでliffアプリが初期化済みかどうかを判定していました。
try {
liff.isLoggedIn();
} catch (e) {
// 初期化済みでない時の処理
}
ですが、今回実装されたliff.id
を使って上記のコードを書き換えてみたところ、うまく動作しました。上記のコードは若干無理矢理感が否めないですが、liff.id
を使えば以下のような綺麗なコードになります。
if (!liff.id) {
// 初期化済みでない時の処理
}
おわりに
本日、@stachibana さん作成のLIFF APP MARKETがリリースされました!
僕も時間割botという学生向けサービスのLIFFアプリ版を公開しましたので興味がある方は是非ご利用ください!