# LIFFアプリを開く

LIFF v2では、LINEまたは外部ブラウザでLIFFアプリを開くことができます。 ここでは、ユーザーがLIFFアプリを開く操作を説明します。

  1. ユーザーがLIFF URLにアクセスします。

    LIFF URLは、LIFFアプリをチャネルに追加すると、発行されます。
    たとえば、LINEのトーク画面に、LIFFアプリを開くためのURLを入力し、吹き出しに表示されたURLをタップします。

    LIFFアプリを開く

  2. ユーザーがLIFFアプリに必要な権限を与えることを許可します。

    LIFFアプリが開きます。

LIFFアプリが開く環境について

ユーザーがLIFF URLにアクセスすると、外部ブラウザまたはLINEでLIFFアプリが開きます。どちらの環境で開くかは、iOSの場合はユニバーサルリンク、Androidの場合はApp Linksの仕様に従います。

# LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について

エンドポイントURLおよびLIFF URLの仕様を変更しました

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

新仕様を利用するには、LIFFアプリの[LIFF URLの追加情報の処理方法]を「連結」に設定します。 今後は、新仕様を利用することを推奨します。

LIFF URLの追加情報の処理方法

なお、以下の点に注意してください。

  • LIFFアプリが新仕様に対応していない場合は、「置換(後方互換性モード)」に設定してください。この場合は、仕様変更の影響を受けません。
  • 新しいLIFFアプリを追加した場合は、「連結」に設定されています。追加するときは、この設定項目は表示されません。必要に応じて編集してください。

ここでは、ユーザーがLIFF URLにアクセスしたときに、LIFFアプリが正しく開くように実装するために、2つのリダイレクト先の設定方法、およびliff.init()メソッドを実行するタイミングを説明します。

リダイレクト先 説明
1次リダイレクト先URL ユーザーがLIFF URLにアクセスしたときに、LIFFサーバーから初めてリダイレクトされる先のURLです。ここにリダイレクトされたときに、liff.init()メソッドを実行します。
2次リダイレクト先URL liff.init()メソッドが実行されたときに、ユーザーがリダイレクトされる先のURLです。ここにリダイレクトされたら、LIFFアプリのページを表示します。

リダイレクトの流れ

liff.init()メソッドを実行するタイミングに注意してください

1次リダイレクト先URL以外のタイミングでliff.init()メソッドを実行すると、INIT_FAILEDが返され、LIFFアプリを開けません。

# LIFF URLを作成する

LIFF URLは、LINEが提供するLIFFサーバーを指すURLです。 LIFFアプリをチャネルに追加すると、発行されます。

# 1次リダイレクト先URLを作成する

1次リダイレクト先URLは、常にLINE Developersコンソールの[エンドポイントURL]に指定したURLです。

LIFF URLに指定した追加情報の扱い

1次リダイレクト先URLでは[LIFF URLの追加情報の処理方法]の設定にかかわらず、LIFF URLに指定した追加情報(例:path_A/?key1=value1#URL-fragment)はすべてliff.stateクエリパラメータに含まれています。

例:https://example.com/2020campaign/?key=value&liff.state=urlencoded(path_A/?key1=value1#URL-fragment)

なお、LIFF URLに追加情報を指定しない場合は、liff.stateクエリパラメータは省略されます。

# 2次リダイレクト先URLを作成する

2次リダイレクト先URLは、LINE Developersコンソールの[LIFF URLの追加情報の処理方法]の設定と、ユーザーがアクセスするURLによって異なります。

# [LIFF URLの追加情報の処理方法]が「連結」の場合

LINE Developersコンソールの[エンドポイントURL]に指定したパスやクエリパラメータ(/2020campaign/?key=value)が、2次リダイレクト先に含まれます。

ユーザーがアクセスするURL 2次リダイレクト先URL
LIFF URL(1)
例:https://liff.line.me/{liffId}
LINE Developersコンソールの[エンドポイントURL]に指定したURLです。
例:https://example.com/2020campaign/?key=value
LIFF URLに追加情報を指定したURL(2)
例:https://liff.line.me/{liffId}/path_A/?key1=value1#URL-fragment
図の(2)のように3種類の情報を組み合わせたURLです。
  • エンドポイントURL]に指定したドメイン名(https://example.com
  • エンドポイントURL]に指定したパスやクエリパラメータ(/2020campaign/?key=value
  • LIFF URLに指定した追加情報(/path_A/?key1=value1#URL-fragment
例:https://example.com/2020campaign/path_A/?key=value&key1=value1#URL-fragment

エンドポイントURL

# [LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」の場合

LINE Developersコンソールの[エンドポイントURL]に指定したパスやクエリパラメータ(/2020campaign/?key=value)が、2次リダイレクト先に含まれないことがあります。

ユーザーがアクセスするURL 2次リダイレクト先URL
LIFF URL LINE Developersコンソールの[エンドポイントURL]に指定したURLです。
例:https://example.com/2020campaign/?key=value

注意:[エンドポイントURL]の設定内容によっては、指定したパスやクエリパラメータ(/2020campaign/?key=value)が、2次リダイレクト先に含まれないことがあります。
LIFF URLに追加情報を指定したURL 以下の2種類の情報を組み合わせたURLです。
  • エンドポイントURL]に指定したドメイン名(https://example.com
  • LIFF URLに指定した追加情報(/path_A/?key1=value1#URL-fragment
例:https://example.com/path_A/?key1=value1#URL-fragment

注意:[エンドポイントURL]に指定したパスやクエリパラメータ(/2020campaign/?key=value)は、2次リダイレクト先に含まれません。
注意

liff.permanentLink.createUrl()メソッドを実行したとき、現在のページのURLが、[エンドポイントURL]に指定したURLで始まらない場合、パーマネントリンクを取得できません。

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