# リリースノート

# LIFFのバージョンとリリース日程

LIFF v2.2.0以降、LIFFのバージョンナンバーはセマンティック バージョニング (opens new window)(SemVer)で定められたルールに従います。詳しくは、「バージョニングポリシー」を参照してください。

CDNパス

LINEでは、CDN固定パスとCDNエッジパスの2種類のCDNパスを用意しています。CDNエッジパスを使用する場合は、常に最新のマイナーバージョンとパッチバージョンに更新されます。CDN固定パスを使用する場合は、新しいバージョンを使用するには、手動でURLを更新する必要があります。

詳しくは、『LIFFドキュメント』の「LIFF SDK(sdk.js)のアップデートポリシー」をご参照ください。

# 現在のバージョン

CDNエッジパス(https://static.line-scdn.net/liff/edge/2/sdk.js)を使用する場合は、常にLIFF v2の最新機能を利用できます。

LIFF v2.4.1:2020年9月24日

# バージョンリスト

CDN固定パス(例:https://static.line-scdn.net/liff/edge/versions/2.4.1/sdk.js)を使用する場合は、LIFFの特定のバージョンの機能を利用できます。

2020/09/28

# LIFF v2.3.3を公開しました

LIFF v2.3.3では以下の不具合を修正しています。

機能の変更はありません。

# エンドポイントURLの末尾が/の場合に意図しないURLへリダイレクトされる不具合を修正しました

以下の条件の時、LIFF URLにアクセスするとパス区切りが二重(//)になり、意図しないURLへリダイレクトされる不具合がありました。

  • エンドポイントURL]に指定したURL中にパスが含まれており、かつ末尾が/になっている(例:https://example.com/campaign/
  • LIFF URLの追加情報の処理方法]が[連結]に設定されている
  • LIFF URLにパス(/path)が含まれている(例:https://liff.line.me/{liffId}/path

LIFF v2.3.3では、上記の条件の場合でも正しいURLへリダイレクトされるように不具合を修正しています。

項目 LIFF URL 1次リダイレクト先 2次リダイレクト先
変更前 https://liff.line.me/{liffId}/path https://example.com/campaign/?liff.state={urlEncode(/path)} https://example.com/campaign//path
変更後 https://liff.line.me/{liffId}/path https://example.com/campaign?liff.state={urlEncode(path)} https://example.com/campaign/path
他のバージョンへの影響
  • LIFF v2.3.xをお使いの場合は、本パッチバージョンへのアップデートをお勧めします。
  • この不具合はLIFF v2.4.1では、すでに修正されています。

LIFF URLへのアクセス時の動作について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

2020/09/24

# LIFF v2.4.1を公開しました

LIFF v2.4.1では、以下の変更が適用されました。

# LIFFアプリを閉じずに別のLIFFアプリを開く機能の不具合を修正しました

LIFF v2.4.0のリリースノートでお知らせした、LIFFアプリを閉じずに別のLIFFアプリを開く機能に不具合があり、条件を満たしていても正しく動作しないことがわかりました。

LIFF v2.4.1では、動作条件を下記に変更したうえで、不具合を修正しています。

項目 変更前 変更後
LIFF SDK 2.4.0 2.4.1
LINE 10.16.0 10.18.0
LIFF v2.4.0の利用は非推奨です

上記の不具合があるため、LIFF v2.4.0の利用は非推奨になります。 LIFF v2.4.0をお使いの場合は、v2.4.1へのアップデートをお勧めします。

詳しくは、『LIFFドキュメント』の「LIFFアプリから別のLIFFアプリを開いた場合の動作について」を参照してください。

# liff.isApiAvailable()でLIFF間遷移可能な状態か確認できるようになりました

APIの使用可否を確認するliff.isApiAvailable()で、LIFF間遷移可否の確認ができるようになりました。

別のLIFFアプリを開く前に、liff.isApiAvailable('multipleLiffTransition')を実行することで、LIFF間遷移が可能な状態か確認することができます。 別のLIFFアプリを開く際に、エラーが発生することを避けることができます。

if (liff.isApiAvailable('multipleLiffTransition')) {
  window.location.href = "https://line.me/{liffId}", // URL for another LIFF app
}
liff.getContext()を使ってLIFF間遷移の情報を取得する

LIFFアプリの情報を取得するliff.getContext()を使って、LIFF間遷移の可否や、実行可能なLINEバージョンを取得することもできるようになりました。

  • availability.multipleLiffTransition.permission:別のLIFFアプリへの遷移が可能かどうかを表します。
  • availability.multipleLiffTransition.minVer:別のLIFFアプリへの遷移が可能なLINEの最小バージョンを表します。

以下は、liff.getContext()を実行した際の戻り値の例です。

{
    "type": "utou",
    "utouId": "UU29e6eb36812f484fd275d41b5af4e760926c516d8c9faa35…b1e8de8fbb6ecb263ee8724e48118565e3368d39778fe648d",
    "userId": "U70e153189a29f1188b045366285346bc",
    "viewType": "full",
    "accessTokenHash": "ArIXhlwQMAZyW7SDHm7L2g",
    "availability": {
        "shareTargetPicker": {
            "permission": true,
            "minVer": "10.3.0"
        },
        "multipleLiffTransition": {
            "permission": true,
            "minVer": "10.18.0"
        }
    }
}

詳しくは、『LIFF APIリファレンス』の「liff.isApiAvailable()」および「liff.getContext()」を参照してください。

# liff.init()が二回呼びだされた際の動作を修正しました

liff.init()によるLIFFアプリの初期化が成功する条件下においてliff.init()を2回以上実行すると、rejectされたPromiseオブジェクトがエラーメッセージと共に返却されていました。

LIFF v2.4.1では、liff.init()が成功する条件下においてliff.init()を2回以上実行すると、resolveされたPromiseオブジェクトが返却され、警告メッセージが出力されるよう修正されました。

LIFFアプリの初期化について詳しくは『LIFFドキュメント』の「LIFFアプリを初期化する」を参照してください。

2020/09/14

# LIFF v2.3.2を公開しました

LIFF v2.3.2では、以下の変更が適用されました。

# LIFFエンドポイントURLに含まれるURLフラグメントがliff.permanentLink.createUrl()で正しく処理されない不具合を修正しました

LIFFのエンドポイントURLにURLフラグメント(#URL-fragment)が含まれていた場合、liff.permanentLink.createUrl()を実行した際、[LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてるにも関わらずパーマネントリンクにURLフラグメントが含まれる不具合がありました。

問題が発生する条件
  • LIFFのLIFFのエンドポイントURLにURLフラグメントが含まれている
  • LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.com/path#sectionに設定されていて、liff.permanentLink.createUrl()を実行するとhttps://liff.line.me/{liffId}/path?liff.state=#sectionがパーマネントリンクとして返されていました。LIFF v2.3.2では、https://liff.line.me/{liffId}が正しく返されるよう修正されています。

# LIFFエンドポイントURLに含まれるクエリパラメータがliff.permanentLink.createUrl()で正しく処理されない不具合を修正しました 

LIFFのエンドポイントURLにクエリパラメータ(?key=value)が含まれていて、同じクエリパラメータが含まれるLIFF URLでliff.permanentLink.createUrl()を実行するとクエリパラメータ部分が無限増殖したパーマネントリンクが返される不具合がありました。

問題が発生する条件
  • LIFFのエンドポイントURLに含まれるクエリパラメータとliff.permanentLink.createUrl()を実行する際のLIFF URLのクエリパラメータが一致する
  • LIFF URLの追加情報の処理方法]が「連結」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.com/path1/?q1=v1&q2=v2に設定されていて、https://liff.line.me/{liffid}/?q1=v1&q2=v2liff.permanentLink.createUrl()を実行すると、https://liff.line.me/{liffid}/?q1=v1&q1=v1&q2=v2&q2=v2のようにクエリパラメータ部分が無限増殖したパーマネントリンクが返されていました。

LIFF v2.3.2では、https://liff.line.me/{liffid}/?q1=v1&q2=v2が正しく返されるよう修正されています。

# LIFFエンドポイントURLに含まれるパスがliff.permanentLink.createUrl()で正しく処理されない不具合を修正しました

LIFFのエンドポイントURLにパスが含まれていて、パスの末尾にスラッシュ(/)が使用されていた場合、liff.permanentLink.createUrl()を実行して取得したパーマネントリンクをクリックすると以下のようにパスの末尾のスラッシュ(/)がリダイレクト先に含まれない不具合がありました。

問題が発生する条件
  • LIFFのエンドポイントURLにパス(/path/)が含まれていて、パスの末尾にスラッシュ(/)が使用されている
  • LIFFのエンドポイントURLにクエリパラメータ(?key=value)やURLフラグメント(#URL-fragment)が含まれている
  • LIFF URLの追加情報の処理方法]が「連結」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.com/path/?id=xxxxxxxに設定されていて、liff.permanentLink.createUrl()を実行して取得したパーマネントリンクにアクセスするとパスの末尾のスラッシュ(/)がリダイレクト先に含まれず、https://example.com/path?id=xxxxxxxに遷移されていました。

LIFF v2.3.2では、https://example.com/path/?id=xxxxxxxへ正しく遷移されるよう修正されています。

# 2次リダイレクト先URLにフラグメントが含まれない不具合を修正しました

LIFFのエンドポイントURLやLIFF URLにURLフラグメントが含まれていた場合、[LIFF URLの追加情報の処理方法]の設定に関わらず、2次リダイレクト先URLにフラグメントが含まれない不具合を修正しました。

2次リダイレクト先URLや[LIFF URLの追加情報の処理方法]の設定による2次リダイレクト先URLへの影響について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

# LIFF URLが意図しないURLへリダイレクトされる不具合を修正しました

LIFF URLに指定した追加情報(例:path/?key=value)は、1次リダイレクト先URLではliff.stateクエリパラメータに含まれます。liff.stateクエリパラメータに追加情報が含まれる場合に、以下のように意図しない2次リダイレクト先URLに遷移する不具合がありました。

問題が発生する条件
  • liff.stateクエリパラメータの先頭に/がない
  • LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.comに設定されており、liff.stateクエリパラメータがpathだった場合、ドメイン名とパスが/で分離されず、https://example.compathにリダイレクトされていました。
LIFF v2.3.2では、https://example.com/pathに正しくリダイレクトされるよう修正されています。

意図しないリダイレクトによる脆弱性について

この不具合を利用することで、悪意あるサイトへ誘導される危険があります。v2.4.0より前のLIFF SDKをお使いの場合はアップデートをおすすめします。

LIFF URLへのアクセス時の動作について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

2020/09/14

# LIFF v2.2.1を公開しました

LIFF v2.2.1では、以下の変更が適用されました。

LIFF URLに指定した追加情報(例:path/?key=value)は、1次リダイレクト先URLではliff.stateクエリパラメータに含まれます。liff.stateクエリパラメータに追加情報が含まれる場合に、以下のように意図しない2次リダイレクト先URLに遷移する不具合がありました。

問題が発生する条件
  • liff.stateクエリパラメータの先頭に/がない
  • LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.comに設定されており、liff.stateクエリパラメータがpathだった場合、ドメイン名とパスが/で分離されず、https://example.compathにリダイレクトされていました。
LIFF v2.2.1では、https://example.com/pathに正しくリダイレクトされるよう修正されています。

意図しないリダイレクトによる脆弱性について

この不具合を利用することで、悪意あるサイトへ誘導される危険があります。v2.4.0より前のLIFF SDKをお使いの場合はアップデートをおすすめします。

LIFF URLへのアクセス時の動作について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

2020/09/14

# LIFF v2.1.14を公開しました

LIFF v2.1.14では、以下の変更が適用されました。

LIFF URLに指定した追加情報(例:path/?key=value)は、1次リダイレクト先URLではliff.stateクエリパラメータに含まれます。liff.stateクエリパラメータに追加情報が含まれる場合に、以下のように意図しない2次リダイレクト先URLに遷移する不具合がありました。

問題が発生する条件
  • liff.stateクエリパラメータの先頭に/がない
  • LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.comに設定されており、liff.stateクエリパラメータがpathだった場合、ドメイン名とパスが/で分離されず、https://example.compathにリダイレクトされていました。
LIFF v2.1.14では、https://example.com/pathに正しくリダイレクトされるよう修正されています。

意図しないリダイレクトによる脆弱性について

この不具合を利用することで、悪意あるサイトへ誘導される危険があります。v2.4.0より前のLIFF SDKをお使いの場合はアップデートをおすすめします。

LIFF URLへのアクセス時の動作について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

2020/08/31

# LIFF v2.4.0を公開しました

2020年9月24日追記

LIFF v2.4.0の利用は、LIFFアプリを閉じずに別のLIFFアプリを開く機能に、不具合が発見されたため非推奨になりました。
この機能を利用するための条件が以下に変わりました。

項目 変更前 変更後
LIFF SDK 2.4.0 2.4.1
LINE 10.16.0 10.18.0

すでにLIFF v2.4.0をお使いの場合は、LIFF v2.4.1へのアップデートをお勧めします。

LIFF v2.4.0では、以下の変更が適用されました。

# LIFFアプリの初期化前でもliff.closeWindow()メソッドが実行できるようになりました

liff.init()メソッドでLIFFアプリを初期化する前に、liff.closeWindow()メソッドを実行できるようになりました。

LIFFアプリ初期化前にliff.closeWindow()メソッドを実行できる条件

LIFF SDKバージョンが2.4.0以上、ユーザーのLINEバージョンが10.15.0以上の場合、LIFFアプリ初期化前にliff.closeWindow()を実行できます。

以下のように、ネットワークエラーや、ユーザーのLINEバージョンなどによってLIFFアプリの初期化に失敗した場合に、liff.closeWindow()メソッドでLIFFアプリを閉じることができます。

liff
  .init({
    liffId: "123456-abcedfg" // Use own liffId
  })
  .then(() => {
    // Start to use liff's api
  })
  .catch((err) => {
    // Error happens during initialization
    console.log(err.code, err.message);
    liff.closeWindow();
  });

詳しくは、『LIFF APIリファレンス』の「liff.closeWindow()」を参照してください。

# LIFFアプリを閉じずに別のLIFFアプリを開くことができるようになりました

画面サイズがFull表示のLIFFアプリ内で、別のLIFFアプリへのリンクをクリックすると、LIFFブラウザを開いたまま別のアプリを表示することができます。
ブラウザが閉じないため、LIFFブラウザの戻るボタンで遷移元のLIFFアプリに戻ることができます。

LIFFアプリを閉じずに別のLIFFアプリに遷移できる条件(2020年9月24日追記)

LIFF v2.4.0では不具合があり、正しく動作しないことがわかりました。この機能の動作条件は以下に変更されています。

  • LIFF SDKバージョンが2.4.1以上、ユーザーのLINEバージョンが10.18.0以上
  • 遷移元のLIFFアプリの画面サイズがFull表示に設定されている
  • 遷移先のLIFFアプリがliff.init()で正しく初期化されている

LIFF-apps-transition

詳しくは、『LIFFドキュメント』の「LIFFアプリから別のLIFFアプリを開いた場合の動作について」を参照してください。

# LIFF URLが意図しないURLへリダイレクトされる不具合を修正しました

LIFF URLに指定した追加情報(例:path/?key=value)は、1次リダイレクト先URLではliff.stateクエリパラメータに含まれます。liff.stateクエリパラメータに追加情報が含まれる場合に、以下のように意図しない2次リダイレクト先URLに遷移する不具合がありました。

問題が発生する条件
  • liff.stateクエリパラメータの先頭に/がない
  • LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」に設定されいてる

たとえば、[エンドポイントURL]がhttps://example.comに設定されており、liff.stateクエリパラメータがpathだった場合、ドメイン名とパスが/で分離されず、https://example.compathにリダイレクトされていました。
LIFF v2.4.0では、https://example.com/pathに正しくリダイレクトされるよう修正されています。

LIFF URLへのアクセス時の動作について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

# liff.permanentLink.createUrl()の不具合を修正しました

LIFFのエンドポイントURLにクエリパラメータ(?key=value)やURLフラグメント(#URL-fragment)などが含まれていた場合、liff.permanentLink.createUrl()を実行した際、場合により追加情報部分がパーマネントリンクに正しく反映されない不具合を修正しました。

# 2次リダイレクト先URLにフラグメントが含まれない不具合を修正しました

LIFFのエンドポイントURLやLIFF URLにURLフラグメントが含まれていた場合、[LIFF URLの追加情報の処理方法]の設定に関わらず、2次リダイレクト先URLにフラグメントが含まれない不具合を修正しました。

2次リダイレクト先URLや[LIFF URLの追加情報の処理方法]の設定による2次リダイレクト先URLへの影響について詳しくは、LIFFドキュメントの「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

2020/07/16

# LIFF v2.3.1を公開しました

LIFF v2.3.1では、以下の変更が適用されました。

機能の変更はありません。

# LIFF SDKのnpmパッケージのドキュメントの不具合を修正しました

試験的に公開していたLIFF SDKのnpmパッケージに関するnpm公式サイト上のドキュメント (opens new window)の不具合を修正しました。

# LIFF SDKのnpmパッケージの利用手順を移動しました

LIFF SDKのnpmパッケージのインストールおよびLIFFアプリへの組み込みの手順をnpm公式サイト (opens new window)からLINE Developersサイトに移動しました。 詳しくは、「LIFFアプリを開発する」の「npmパッケージを利用する」を参照してください。

2020/07/15

# LIFFのヘッダーに機能を追加しました

2020年7月6日にお知らせしたとおり、LIFFのヘッダーに機能を追加しました。

LIFF header design to be improved

# LIFFアプリのアイコンが非表示になりました

LIFFアプリの左上に表示されていたアイコンが非表示になりました。

# シェアボタンが表示されるようになりました

画面サイズFullに設定しているLIFFアプリでは、ヘッダーにシェアボタンが表示されるようになりました。 ユーザーがシェアボタンをタップすると、以下のオプションが表示されます。

項目 説明
シェア 現在開いているページのURLを、LINEメッセージでシェアします。
更新 現在開いているページを再読み込みします。

なお、LINE DevelopersコンソールでLIFFアプリの[モジュールモード]をオンにすると、シェアボタンを非表示にできます。

動作環境

シェアボタンは、iOS版LINE、Android版LINEのバージョン10.12.0以降で表示できます。

2020/07/01

# LIFF SDKをnpmパッケージとして公開しました

これまで、LIFFアプリにLIFF SDKを組み込むには、CDNパスを指定する必要がありました。

2020年7月1日より、LIFF SDKのnpmパッケージを試験的に公開しました。 今後は、npmおよびYarnを利用して、LIFF SDKをインストールできます。

LIFF SDKのnpmパッケージについて詳しくは、https://www.npmjs.com/package/@line/liff (opens new window)を参照してください。

また、npmパッケージとして利用できるLIFF SDKのバージョンはv2.3.0以降です。今後のLIFF SDKのバージョンアップの内容については、このページでお知らせします。

注意

npmパッケージは、試験的に公開しています。今後、予告なく変更、または削除される可能性があります。

2020/06/29

# LIFF v2.3.0を公開しました

LIFF v2.3.0では、以下の機能が追加されました。

# LIFFのエンドポイントURLでパスおよびクエリパラメータを利用できるようになりました

LINE Developersコンソールの[エンドポイントURL]に入力したパス(/path)およびクエリパラメータ(?key=value)を、LIFFアプリで利用できるようになりました。

LIFFアプリの[LIFF URLの追加情報の処理方法]を「連結」に設定した場合、LIFFアプリにアクセスすると、パスやクエリパラメータを含む[エンドポイントURL]と、[LIFF URL]に指定した追加情報を組み合わせたURLにリダイレクトします。

詳しくは、『LIFFドキュメント』の「LIFF アプリを開く」を参照してください。

liff.permanentLink.createUrl()メソッドを実行したとき、現在のページのURLが[エンドポイントURL]に指定したURLで始まらない場合に、例外が発生します。

特に[LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」のときは、[エンドポイントURL]に指定したパスやクエリパラメータ(/2020campaign/?key=value)が、2次リダイレクト先に含まれないことがあります。 その場合、liff.permanentLink.createUrl()メソッドが上記の条件を満たすため、パーマネントリンクを取得できません。

詳しくは、『LIFF v2 APIリファレンス』の「liff.permanentLink.createUrl()」を参照してください。

# liff.shareTargetPicker()の送信結果を取得できるようになりました

仕様変更前は、ターゲットピッカーを表示できたかどうかをLIFFアプリが確認できましたが、その後、メッセージを送信できたかどうかは確認できませんでした。

仕様変更後は、メッセージを送信できたかどうかを確認できるため、ユーザーの状況に合わせて、LIFFアプリの挙動を変更するように実装できます。

注意
  • この仕様変更により、liff.shareTargetPicker()の戻り値に変更があります。
  • ユーザーがLINE 10.3.0~LINE 10.10.0を使用している場合は、この仕様変更の影響を受けません。

詳しくは、『LIFF v2 APIリファレンス』の「liff.shareTargetPicker()」を参照してください。

# liff.sendMessages()で返されるエラーコードを追加しました

liff.sendMessages()に不正なパラメータを渡した場合、LiffErrorのエラーコードで400が返されていました。仕様変更後は、400の代わりにINVALID_ARGUMENTが返されます。

なお、エラーコードによって処理を分岐していない場合は、仕様変更の影響を受けません。

詳しくは、2020年6月29日のニュースを参照してください。

2020/06/15

# LIFF v2.2.0:LiffErrorのコードを追加しました

以下のメソッドでPromiseがrejectされたときに渡されるLiffErrorのコードがより詳細になり、問題の原因がわかりやすくなりました。

詳しくは、以下のメソッドの「エラーレスポンス」を参照してください。

2020/04/30

# LIFF v2.1.13:LIFF v2にliff.getLineVersion()およびliff.idが追加されました

LIFF v2に、liff.getLineVersion()メソッドおよびliff.idプロパティが追加されました。

liff.getLineVersion()を使用すると、ユーザーのLINEバージョンを取得できます。

ユーザーがLIFFブラウザでLIFFアプリを開くと、ユーザーのLINEバージョンが文字列で返されます。 ユーザーが外部ブラウザでLIFFアプリを開くと、 nullが返されます。

liff.idは、 liff.init()に渡したLIFFアプリID(String型)を保持するプロパティです。

詳しくは、『LIFF v2 APIリファレンス』の「liff.getLineVersion()」および「liff.id」を参照してください。

2020/04/03

# LIFF v2にliff.isApiAvailable()が追加されました

LIFF v2に、liff.isApiAvailable()が追加されました。 指定したAPIが、LIFFアプリを起動した環境で使用可能かどうかを確認できます。

注意

指定できるAPIは限られています。 現時点では、liff.shareTargetPicker()が対象です。 今後、liff.isApiAvailable()で指定できるAPIが増えたときには、改めてお知らせします。

# ターゲットピッカーの使用可否の確認

liff.isApiAvailable()を事前に実行することで、ターゲットピッカーが使用不可能な環境でliff.shareTargetPicker()を実行した際、ユーザーの画面にエラーメッセージが表示されることを避けられます。

if (liff.isApiAvailable('shareTargetPicker')) {
  liff.shareTargetPicker([
    {
      type: "text",
      text: "Hello, World!"
    }
  ])
    .then(
      alert("ShareTargetPicker was launched")
    ).catch(function(res) {
      alert("Failed to launch ShareTargetPicker")
    })
}

詳しくは、『LIFF v2 APIリファレンス』の「liff.isApiAvailable()」を参照してください。

2020/03/03

# LIFF v2にliff.shareTargetPicker()およびliff.readyが追加されました

LIFF v2に、liff.shareTargetPicker()およびliff.readyが追加されました。

# liff.shareTargetPicker()

ターゲットピッカー(グループまたは友だちを選択する画面)を表示し、ターゲットピッカーで選択した相手に、開発者が作成したメッセージを送信するメソッドが追加されました。このメッセージは、ユーザーが送信したかのように、グループまたは友だちに表示されます。

target picker

詳しくは、『LIFFドキュメント』の「ユーザーの友だちにメッセージを送信する」を参照してください。

ターゲットピッカーの動作環境について

ターゲットピッカーは、iOS版とAndroid版のLINE 10.3.0以降でサポートされます。

# liff.ready

LIFFアプリ起動後、liff.init()の実行が初めて終了したときにresolveするPromiseオブジェクトを利用できるようになりました。liff.readyを利用すると、liff.init()の終了を待って、任意の処理を実行できます。

詳しくは、『LIFF v2 APIリファレンス』の「liff.ready」を参照してください。

2020/02/07

# LIFF v1 廃止対象APIと廃止スケジュール変更のお知らせ

LINE Front-end Framework(LIFF) v1のサーバーAPIを2020年3月31日に廃止する告知をしましたが、影響範囲を考慮し提供を継続します。

LIFF v1全体の廃止時期については、決まり次第改めてお知らせしますが、早めの移行を推奨します。

機能 変更前のスケジュール 変更後のスケジュール
LIFF v1 クライアントAPI 廃止予定 廃止予定(変更ありません)
LIFF v1 サーバーAPI 2020年3月31日廃止 提供を継続
LIFF v1の廃止予定は変わりません

2019年10月16日に告知したとおり、LIFF v1は、廃止される予定です。最新バージョンのLIFFを使用してください。

2020/02/05

# Messaging APIのチャネルにはLIFFアプリを追加できなくなりました

2019年11月11日に告知したとおり、LIFF v2の機能拡張に伴いMessaging APIのチャネルにはLIFFアプリを追加できなくなりました。

すでにMessaging APIチャネルに追加したLIFFアプリに関する制限や、LINEログインチャネルへの移行方法に関しては上記のニュース記事をご参照ください。

2020/01/21

# 2020年3月31日にLIFF v1のサーバーAPIの提供を終了します

2020年3月31日に、LINE Front-end Framework(LIFF) v1のサーバーAPIの提供を終了します。提供終了日に、以下の機能を削除する予定です。

最新バージョンのLIFFを使用してください

2019年10月16日に告知したとおり、LIFF v1は、廃止される予定です。

# LIFF v2を利用してください

提供を終了するサーバーAPIの機能は、すべてLINE Developersコンソールで利用できます。LIFFアプリをチャネルに追加する操作について詳しくは、以下の項目を参照してください。

そのほかの機能も、同様の操作で利用できます。

LINEは今後もお客様への一層のサービス向上に取組んでまいります。何卒ご理解を賜りますよう、よろしくお願い申し上げます。

2020/01/14

# 提供を一時停止しているLIFF SDKのAPIを使用している場合はコードを修正してください

2019年11月29日に告知したとおり、iOS版のLINE 9.19.0以降では、以下のAPIは、技術的な問題があり提供を一時停止しています。

  • liff.scanCode()
  • liff.bluetooth.*

さらに本日から、iOS版のLINE 9.19.0以降を使用するエンドユーザーがLIFFアプリを利用した場合は、それぞれのAPIは以下のように動作します。

API 動作
liff.scanCode() APIがundefinedになる
liff.bluetooth.* liff.initPlugins(['bluetooth'])を呼び出したときに、Bluetoothプラグインの初期化に失敗し、FORBIDDENエラーが返される

liff.scanCode()を利用する場合は、上記のケースも考慮し、関数の存在を確認することをお勧めします。

修正前:

liff.scanCode().then(result => {
  // result = { value: '' }
});

修正後:

if (liff.scanCode) {
	liff.scanCode().then(result => {
	  // result = { value: '' }
	});
}

詳しくは、『LIFF v2 APIリファレンス』を参照してください。

LINEは今後もお客様への一層のサービス向上に取組んでまいります。何卒ご理解を賜りますよう、よろしくお願い申し上げます。

2019/11/29

# LIFFの一部機能の提供の一時停止について

以下の機能は、技術的な問題があり提供を一時停止することになりました。今後の対応が決まり次第、改めてお知らせします。

  • liff.scanCode()
  • liff.bluetooth.*

# 一時停止バージョン

LINE 一時停止バージョン
iOS版LINE 9.19.0以降は、上記の機能の提供を一時停止します
Android版LINE 対応方法を検討しています

ご利用のユーザー様にはご不便をおかけいたしますが、何卒ご理解いただきますようお願い申し上げます。

2019/11/11

# Messaging APIのチャネルにはLIFFアプリを追加できなくなります

LIFF v2では、LINEログインを中核とした機能拡張を予定しています。そのため、LINEログインチャネルにLIFFアプリを追加することを推奨します。それに伴い、現在サポートしているMessaging APIチャネルにLIFFアプリを追加できなくなる仕様変更が予定されています。

# 仕様変更時期

2020年2月上旬

# 影響

チャネル種別 影響
LINEログインチャネル 仕様変更の影響を受けません。
Messaging APIチャネル 仕様変更以降は、Messaging APIチャネルにはLIFFアプリを追加できません。仕様変更時点でMessaging APIチャネルに追加済みのLIFFアプリは、引き続き使用できます。
Messaging APIチャネルにLIFFアプリを追加しないでください

現時点では、Messaging APIチャネルにLIFFアプリを追加することもできますが、追加しないでください。Messaging APIチャネルに追加したLIFFアプリには、以下の制限があります。

  • ボットリンク機能は利用できません。
  • LIFFの機能拡張に対応できない可能性があります。
  • LIFFアプリが使用できなくなる可能性があります。

なお、LINEログインチャネルに追加したLIFFアプリには制限がなく、LIFF v2のすべての機能を利用できます。

# LINEログインチャネルへの移行

Messaging APIチャネルに追加したLIFFアプリを継続して使用するには、LINEログインチャネルにLIFFアプリを追加し直してください。

LIFFアプリを追加し直すと、LIFFアプリIDが再発行されるため、以下の点に注意してください。

  • LIFF v2を利用している場合は、liff.init()に指定するLIFFアプリIDを変更してください。
  • LIFFを起動するためのLIFF URL(例:line://app/1234567890-AbcdEfgh)が変更されます。
Messaging APIチャネルに追加したLIFFアプリは削除してください

混乱を避けるために、LIFFアプリをLINEログインチャネルへ追加したあとで、Messaging APIチャネルに追加したLIFFアプリを削除してください。

2019/10/16

# LIFF v2がリリースされました

LINE Front-end Framework(LIFF) v2は、LINEが提供するウェブアプリのプラットフォームです。

最新バージョンのLIFFを使用してください

LIFF v1は、廃止される予定です。

# 外部ブラウザでLIFFアプリが動作します

LIFF v1では、LIFFアプリはLIFFブラウザでのみ動作していました。LIFF v2からは、外部ブラウザでも動作します。これにより、一般のウェブアプリと同じ開発環境で、LIFFアプリを開発できるようになりました。

# ユーザーのプロフィール情報とメールアドレスを取得できます

LINEログイン v2.1との互換性が向上したため、ユーザーIDやメールアドレスをLINEプラットフォームから取得できます。LIFFアプリではこれらを利用して、ユーザー情報を活用した機能を提供したり、メールを送信したりできます。

なお、外部ブラウザで動作しているときでも、LINEログインの処理(ウェブログイン)が利用できます。したがって、外部ブラウザで動作しているときも同様の情報を利用できます。

# QRコードを読み取れます

LINEのQRコードリーダーを起動し、ユーザーが読み取った文字列を取得できます。

# LIFFアプリの動作環境を細かく取得できます

LIFFアプリを動作させている環境の情報を細かく取得できます。取得できる情報は以下のとおりです。

  • LIFFアプリが動作しているOS(iOS、Android、外部ブラウザ)
  • LIFFブラウザで起動しているかどうか(true、false)
  • 言語設定

詳しくは、「LINE Front-end Framework」を参照してください。

2019/04/23

# LINE Front-end Frameworkの同意画面が改善されました

LINE Front-end Framework(LIFF)で、ユーザーがLIFFアプリを起動したときに表示される同意画面が改善されました。この改善は、すべてのLIFFアプリに自動的に適用されるため、追加の開発作業は不要です。

新画面(イメージ)

New consent screen

なお、ユーザーに「トークへのメッセージ送信」の認可を求めるLIFFアプリでは、同意画面でユーザーが許可しない場合があります。この場合は、次にユーザーがLIFFアプリを起動したときに同意画面が再表示されます。

2019/02/07

# LIFF SDKでアクセストークンを取得できるようになりました

LIFF SDKにliff.getAccessToken()メソッドが追加されました。

アクセストークンを使ってSocial APIにリクエストを送信し、LINEプラットフォームのユーザーデータにアクセスできます。

詳しくは、「ユーザーのアクセストークンを取得する」を参照してください。

2018/11/16

# LIFFのサーバーAPIが新しくなりました

LIFFアプリに以下のプロパティを設定できるようになりました。

  • descriptionプロパティ
  • features.bleプロパティ

また、LIFFアプリを更新するAPIが変更され、プロパティを部分的に変更できるようになりました。

詳しくは、以下のセクションを参照してください。

2018/10/30

# LIFFアプリをLINE Developersコンソールで追加できるようになりました

LIFFアプリをLINE Developersコンソールで追加できるようになりました。今までと同様に、LIFFサーバーAPIでもLIFFアプリを追加できます。

詳しくは、「LIFFアプリを追加する」を参照してください。

2018/07/19

# LIFFアプリ数の上限が変更されました

LINE Front-end Frameworkで、1つのチャネルあたり最大30件のLIFFアプリを追加できるようになりました。以前の最大登録数は10件でした。

詳しくは、『LIFF APIリファレンス』の「LIFFアプリを追加する」を参照してください。

2018/06/06

# LINE Front-end Frameworkがリリースされました

LINE Front-end Framework(LIFF)は、LINE内で動作するウェブアプリのプラットフォームです。

LIFFに登録したウェブアプリ(LIFFアプリ)をLINE内で起動すると、LINEのユーザーIDなどをLINEプラットフォームから取得できます。LIFFアプリではこれらを利用して、ユーザー情報を活用した機能を提供したり、ユーザーの代わりにメッセージを送信したりできます。

詳しくは、「LINE Front-end Framework」を参照してください。