# LIFF v2 APIリファレンス
# クライアントAPI
# 動作環境
LIFF v2の動作環境については、『LIFFドキュメント』の「概要」を参照してください。
なお、LIFFアプリをLIFFブラウザで開いた場合と、外部ブラウザで開いた場合では、使用できる機能が異なります。たとえば、liff.scanCode()
は、外部ブラウザでは利用できません。詳しくは、各クライアントAPIの説明をご覧ください。
現在のところ、OpenChatではLIFFアプリの利用は正式にサポートされていません。たとえば、LIFFアプリからプロフィール情報を取得できない場合があります。
# LIFF SDKのエラー
LIFF SDKのエラーはLiffErrorオブジェクトで返されます。
エラーの例
# LiffErrorオブジェクト
code
String
エラーコード
message
String
エラーメッセージ。定義されたメッセージが存在する場合に返されます。
# エラー内容
エラーコード | 説明 |
---|---|
400 | リクエストに問題があります。リクエストパラメータとJSONの形式を確認してください。 |
401 | Authorizationヘッダーを正しく送信していることを確認してください。 |
403 | APIを使用する権限がありません。ご契約中のプランやアカウントに付与されている権限を確認してください。 |
429 | リクエスト頻度をレート制限内に抑えてください。 |
500 | APIサーバーの一時的なエラーです。 |
INIT_FAILED | LIFF SDKの初期化時にエラーが発生しました。 |
INVALID_ARGUMENT | 無効な引数が指定されました。 |
UNAUTHORIZED |
|
FORBIDDEN |
|
INVALID_CONFIG | 無効な設定です。
|
INVALID_ID_TOKEN | IDトークンが正規のものであることを確認できませんでした。 |
EXCEPTION_IN_SUBWINDOW | サブウィンドウで問題が発生しました。
|
THINGS_NO_LINKED_DEVICES | デバイスがありません。 |
BLUETOOTH_SETTING_OFF | Bluetooth機能がオフになっています。 |
THINGS_TERMS_NOT_AGREED | ユーザーがLINE Thingsの利用規約に同意していません。 |
BLUETOOTH_NO_LOCATION_PERMISSION | ユーザーが位置情報の取得を許可していません。 |
BLUETOOTH_LOCATION_DISABLED | 位置情報取得機能がオフになっています。 |
BLUETOOTH_LE_API_UNAVAILABLE | LIFFのBluetoothプラグインが使用できません。 |
BLUETOOTH_CONNECT_FAILED | デバイスとの接続に失敗しました。 |
BLUETOOTH_ALREADY_CONNECTED | デバイスは接続済みです。 |
BLUETOOTH_CONNECTION_LOST | デバイスが接続されていません。 |
BLUETOOTH_UNSUPPORTED_OPERATION | 指定したcharacteristicでは、指定した操作がサポートされていません。 |
BLUETOOTH_SERVICE_NOT_FOUND | 指定したサービスが、GATTサーバーに存在しません。 |
BLUETOOTH_CHARACTERISTIC_NOT_FOUND | 指定したcharacteristicが、サービスに存在しません。 |
UNKNOWN | 不明なエラーです。 |
# LIFF SDKのプロパティ
# liff.ready
LIFFアプリ起動後、liff.init()
の実行が初めて終了したときにresolveするPromise
オブジェクトを保持するプロパティです。
liff.ready
を利用すると、liff.init()
の終了を待って、任意の処理を実行できます。
liff.ready
は、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
リクエストの例
liff.init()
実行中に何か問題が起きても、liff.ready
はrejectしません。また、LiffError
オブジェクトを返すこともありません。
# liff.id
liff.init()
に渡したLIFFアプリID(String
型)を保持するプロパティです。
liff.init()
を実行するまでは、null
です。
使用例
# liff.init()
LIFFアプリを初期化します。このメソッドを実行すると、LIFF SDKの他のメソッドを実行できるようになります。このとき、LIFF SDKは、現在のユーザーのアクセストークンやIDトークンをLINEプラットフォームから取得します。
以下のプロパティおよびメソッドは、liff.init()
メソッドを実行する前でも利用できます。
LIFFアプリを初期化する前にLIFFアプリを動作させている環境を取得したり、LIFFアプリ初期化に失敗した際にLIFFアプリを閉じたりできます。
- liff.ready
- liff.getOS()
- liff.getLanguage()
- liff.getVersion()
- liff.getLineVersion()
- liff.isInClient()
- liff.closeWindow()
liff.closeWindow()
メソッドは、LIFF SDKバージョンが2.4.0以上、ユーザーのLINEバージョンが10.15.0以上の場合のみ、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
- LIFF SDKが取得したアクセストークンを利用するには、「liff.getAccessToken()」を呼び出します。
- LIFF SDKが取得したIDトークンのペイロードを利用するには、「liff.getDecodedIDToken()」を呼び出します。
ユーザーがエンドポイントURLに初めてリダイレクトされたタイミング(1次リダイレクト先URL)で、liff.init()
メソッドを実行してください。
これ以外のタイミングでliff.init()
メソッドを実行すると、INIT_FAILED
が返され、LIFFアプリを開けません。
詳しくは、「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。
liff.init()
メソッドは、LIFFアプリを開いた際にURLに付与されるliff.state
やaccess_token=xxx
などの情報を元に初期化処理を行います。正しく初期化を完了するために、liff.init()
完了前に、サーバーやフロントエンド側の処理などでURLを変更しないようにしてください。liff.state
が含まれる1次リダイレクト先URLは、liff.init()
実行時に2次リダイレクト先URLへリダイレクトされます。1次リダイレクト先URLにはユーザーのアクセストークンなどの機密情報が含まれるため、Google Analyticsなど外部のロギングツールにURLの情報を送らないように注意してください。liff.init()
実行後にlocation.replace()
などでリダイレクトする場合は、Promise
オブジェクトがresolveされてから画面遷移するように設計してください。
リクエストの例
# 構文
liff.init(
config,
successCallback,
errorCallback
)
# 引数
config
Object
LIFFアプリの設定
config.liffId
String
LIFFアプリID。LIFFアプリをチャネルに追加すると取得できます。詳しくは、「LIFFアプリをチャネルに追加する」を参照してください。
ここで指定したLIFFアプリIDは、liff.id
で取得できます。
LINE以外からLINEログインする場合は、liffId
が必要です。
successCallback
Function
LIFFアプリの初期化に成功したときにデータオブジェクトを返すコールバック
コールバックを使用する場合は必要です。
errorCallback
Function
LIFFアプリの初期化に失敗したときにエラーオブジェクトを返すコールバック
コールバックを使用する場合は必要です。
# 戻り値
Promise
オブジェクトが返されます。
# エラーレスポンス
Promise
がrejectされたときは、LiffError
が渡されます。
# liff.getOS()
ユーザーがLIFFアプリを動作させている環境を取得します。
このメソッドは、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
# 構文
liff.getOS()
# 引数
なし
# 戻り値
ユーザーがLIFFアプリを動作させている環境が、文字列で返されます。戻り値はユーザーエージェント文字列中のOS名に基づくため、返却される値はブラウザの種類(LIFFブラウザ、LINE内ブラウザ、外部ブラウザ)を問いません。
たとえば、ユーザーがiOSを使用している場合、使用しているブラウザがLIFFブラウザかSafariかは問わず、ios
が返却されます。
戻り値 | 説明 |
---|---|
ios | iOSもしくはiPadOS |
android | Android |
web | 上記以外 |
LIFFアプリをサポートするOSやブラウザについては、動作環境を参照してください。
# liff.getLanguage()
LIFFアプリを動作させている環境の言語設定を取得します。
このメソッドは、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
# 構文
liff.getLanguage()
# 引数
なし
# 戻り値
LIFFアプリを動作させている環境のnavigator.language
で取得できる言語設定が、文字列で返されます。
# liff.getVersion()
LIFF SDKのバージョンを取得します。
このメソッドは、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
# 構文
liff.getVersion()
# 引数
なし
# 戻り値
LIFF SDKのバージョンが、文字列で返されます。
# liff.getLineVersion()
ユーザーのLINEバージョンを取得します。
このメソッドは、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
# 構文
liff.getLineVersion()
# 引数
なし
# 戻り値
ユーザーがLIFFブラウザでLIFFアプリを開くと、ユーザーのLINEバージョンが文字列で返されます。
ユーザーが外部ブラウザでLIFFアプリを開くと、 null
が返されます。
# liff.isInClient()
LIFFアプリをLIFFブラウザで動作させているかどうかを取得します。
このメソッドは、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
# 構文
liff.isInClient()
# 引数
なし
# 戻り値
# liff.isLoggedIn()
ユーザーがログインしているかどうかを取得します。
リクエストの例
# 構文
liff.isLoggedIn()
# 引数
なし
# 戻り値
true
:ログインしているfalse
:ログインしていない
# liff.isApiAvailable()
指定したAPIが、LIFFアプリを起動した環境で使用可能かどうかを確認します。 たとえば、APIが対応しているLINEバージョンであることや、APIを呼び出すために特別な同意が必要な場合は同意していることを確認します。
リクエストの例
# 構文
liff.isApiAvailable(apiName)
# 引数
apiName
String
LIFFのクライアントAPIの名前。以下のAPI名を指定できます。
multipleLiffTransition
は、LIFFアプリを閉じずに別のLIFFアプリを開くことが可能かの状態を表すプロパティで、APIの名前ではありません。
# 戻り値
指定したAPIが、現在の環境で使用可能かどうかが返されます。
戻り値 | 説明 |
---|---|
true | 使用可能 |
false | 使用不可能。以下の場合は、false が返されます。
|
LIFFアプリを外部ブラウザで利用する場合は、常にtrue
を返します。
# liff.login()
外部ブラウザおよびLINE内ブラウザ上で、LINEログインの処理(ウェブログイン)を行います。
LIFFブラウザの場合、liff.init()
実行時に自動でLINEログインの処理が実行されるため、liff.login()
は利用できません。
LIFFブラウザ内でLINEログインによる認可リクエストを行った際の動作は保証されません。また、LIFFアプリを外部ブラウザやLINE内ブラウザで開く場合には、必ず本メソッドでログイン処理を行い、LINEログインによる認可リクエストは行わないでください。
リクエストの例
# 構文
liff.login(loginConfig)
# 引数
loginConfig
Object
LINEログインの設定
loginConfig.redirectUri
String
LINEログイン後にLIFFアプリで表示するURL。デフォルト値は、LIFFアプリをチャネルに追加したときに設定したエンドポイントURLです。エンドポイントURLの設定方法について詳しくは、『LIFFドキュメント』の「LIFFアプリをチャネルに追加する」を参照してください。
redirectUri
を指定した場合、アクセスしたLIFF URLのチャネルに設定された[エンドポイントURL]が、redirectUri
に指定したURLと一致しているか検証します。
URL一致の判定基準について詳しくは、『LIFFドキュメント』の「URL検証機能」を参照してください。
# 戻り値
なし
# liff.logout()
ログアウトします。
リクエストの例
# 構文
liff.logout()
# 引数
なし
# 戻り値
なし
# liff.getAccessToken()
LIFF SDKが取得した「現在のユーザーのアクセストークン」を取得します。
LIFFアプリからサーバーにユーザー情報を送信するときに、このAPIで取得したアクセストークンを利用できます。 サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。
アクセストークンは、発行後12時間有効です。 なお、ユーザーがLIFFアプリを閉じると、アクセストークンは無効化されます。
- LIFFブラウザでLIFFアプリを起動した場合は、
liff.init()
を呼び出したときに、LIFF SDKがアクセストークンを取得します。 - 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがアクセストークンを取得します。
- LIFFアプリで、
liff.login()
を呼び出す。 - ユーザーがLINEログインする。
- LIFFアプリで、再度
liff.init()
を呼び出す。
- LIFFアプリで、
リクエストの例
# 構文
liff.getAccessToken()
# 引数
なし
# 戻り値
現在のユーザーのアクセストークンを文字列で返します。
# liff.getIDToken()
LIFF SDKが取得した「現在のユーザーの生のIDトークン」を取得します。IDトークンは、ユーザー情報を含むJSONウェブトークン(JWT)です。
LIFFアプリからサーバーにユーザー情報を送信するときに、このAPIで取得したIDトークンを利用できます。 サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。
LIFFアプリをチャネルに追加するときに、openid
スコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、IDトークンを取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
- LIFFブラウザでLIFFアプリを起動した場合は、
liff.init()
を呼び出したときに、LIFF SDKがIDトークンを取得します。 - 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがIDトークンを取得します。
- LIFFアプリで、
liff.login()
を呼び出す。 - ユーザーがLINEログインする。
- LIFFアプリで、再度
liff.init()
を呼び出す。
- LIFFアプリで、
LIFFアプリをチャネルに追加するときに、email
スコープを選択し、ユーザーが認可すると、メールアドレスも取得できます。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
リクエストの例
# 構文
liff.getIDToken()
# 引数
なし
# 戻り値
生のIDトークンが返されます。
# liff.getDecodedIDToken()
LIFF SDKが取得したIDトークンの「ペイロード」を取得します。ペイロードには、ユーザーの表示名、プロフィール画像のURL、メールアドレスなどの情報が含まれます。
LIFFアプリでユーザーの表示名などを利用する場合に、このAPIを利用してください。
このAPIで取得したユーザー情報をサーバーに送信しないでください。 サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。
LIFFアプリをチャネルに追加するときに、openid
スコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、IDトークンを取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
- LIFFブラウザでLIFFアプリを起動した場合は、
liff.init()
を呼び出したときに、LIFF SDKがIDトークンを取得します。 - 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがIDトークンを取得します。
- LIFFアプリで、
liff.login()
を呼び出す。 - ユーザーがLINEログインする。
- LIFFアプリで、再度
liff.init()
を呼び出す。
- LIFFアプリで、
LIFFアプリをチャネルに追加するときに、email
スコープを選択し、ユーザーが認可すると、メールアドレスも取得できます。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
リクエストの例
# 構文
liff.getDecodedIDToken()
# 引数
なし
# 戻り値
IDトークンのペイロードが返されます。
IDトークンのペイロードについて詳しくは、「IDトークンからプロフィール情報とメールアドレスを取得する」の「ペイロード」を参照してください。
IDトークンのペイロードの例
# liff.getContext()
LIFFアプリが起動された画面(1対1のトーク、グループ、トークルーム、または外部ブラウザ)に関する情報を取得します。 なお、1対1のトーク、グループ、およびトークルームの場合は、一意に識別できる値も取得できます。
リクエストの例
# 構文
liff.getContext()
# 引数
なし
# 戻り値
各種APIを呼び出すために必要な情報を含むデータオブジェクトが返されます。
type
String
LIFFアプリが起動された画面の種類。以下のいずれかの値が含まれます。
utou
:1対1のトークgroup
:グループroom
:トークルームexternal
:外部ブラウザnone
:LINEの1対1のトーク、グループ、トークルーム、外部ブラウザ以外から起動した場合。例:ウォレットタブ
LIFF間遷移後のLIFFアプリでは、このプロパティは返りません。
viewType
String
LIFFアプリの画面サイズ。type
プロパティがutou
、group
、またはroom
の場合に、以下のいずれかの値が含まれます。
compact
tall
full
詳しくは、「LIFFアプリをチャネルに追加する」を参照してください。
accessTokenHash
String
SHA256でハッシュ化したアクセストークンの前半部分。アクセストークンの検証に使用されます。
userId
String
ユーザーID。type
プロパティが、utou
、room
、group
、none
またはexternal
の場合に含まれます。ただし、type
プロパティがexternal
の場合は、nullが返されることがあります。
utouId
String
1対1トークID。type
プロパティがutou
の場合に含まれます。
LIFF間遷移後のLIFFアプリでは、このプロパティは返りません。
groupId
String
グループID。type
プロパティがgroup
の場合に含まれます。
LIFF間遷移後のLIFFアプリでは、このプロパティは返りません。
roomId
String
トークルームID。type
プロパティがroom
の場合に含まれます。
LIFF間遷移後のLIFFアプリでは、このプロパティは返りません。
availability.shareTargetPicker.permission
Boolean
LIFFアプリを起動した環境で、liff.shareTargetPicker()が使用可能かどうかを表します。
true
:liff.shareTargetPicker()
が使用可能。false
:liff.shareTargetPicker()
が使用不可。
※liff.shareTargetPicker()
の使用可否は、このプロパティではなく、liff.isApiAvailable('shareTargetPicker')で確認することをお勧めします。
availability.shareTargetPicker.minVer
String
liff.shareTargetPicker()が使用可能なLINEの最小バージョン
availability.multipleLiffTransition.permission
Boolean
LIFFアプリを起動した環境で、LIFFアプリを閉じずにliff.openWindow()
で別のLIFFアプリへ遷移することが可能かどうかを表します。
true
:現在表示しているLIFFアプリを閉じずに別のLIFFアプリを開くことが可能。false
:現在表示しているLIFFアプリを閉じずに別のLIFFアプリを開くことが不可。
※LIFF間遷移可否の情報は、このプロパティではなく、liff.isApiAvailable('multipleLiffTransition')で確認することをお勧めします。
availability.multipleLiffTransition.minVer
String
LIFFアプリを閉じずに別のLIFFアプリを開くことが可能なLINEの最小バージョン
endpointUrl
String
LIFFアプリのエンドポイントURL。
permanentLinkPattern
String
LIFF URLの追加情報の処理方法。concat
が返されます。
詳しくは、『LIFFドキュメント』の「LIFFアプリを開く」を参照してください。
以下の場合は、null
を返します。
- 外部ブラウザでLIFFアプリを開いている場合。
- LINE内ブラウザでLIFFアプリを開いて、LINEログインで利用している場合。
戻り値の例(LIFFブラウザの場合)
戻り値の例(外部ブラウザの場合)
# liff.getProfile()
現在のユーザーのプロフィール情報を取得します。
LIFFアプリをチャネルに追加するときに、profile
スコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、プロフィール情報を取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
リクエストの例
# 構文
liff.getProfile()
# 引数
なし
# 戻り値
Promise
オブジェクトが返されます。
Promise
がresolveされると、ユーザーのプロフィール情報を含むオブジェクトが渡されます。
userId
String
ユーザーID
displayName
String
表示名
pictureUrl
String
画像のURL。ユーザーが設定していない場合は返されません。
statusMessage
String
ステータスメッセージ。ユーザーが設定していない場合は返されません。
# エラーレスポンス
Promise
がrejectされたときは、LiffError
が渡されます。
ユーザーのプロフィール情報の例
# liff.getFriendship()
ユーザーとLINE公式アカウントの友だち関係を取得します。
ただし、LIFFアプリが追加されているLINEログインのチャネルに、LINE公式アカウントがリンクされている場合に、そのLINE公式アカウントとの友だち関係のみを取得できます。LINEログインのチャネルに、LINE公式アカウントをリンクする方法については、『LINEログインドキュメント』の「LINEログインしたときにLINE公式アカウントを友だち追加する(ボットリンク)」を参照してください。
LIFFアプリをチャネルに追加するときに、profile
スコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、友だち関係を取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
リクエストの例
# 構文
liff.getFriendship()
# 引数
なし
# 戻り値
Promise
オブジェクトが返されます。
友だち関係を取得できると、Promise
がresolveされ、友だち関係に関する情報が渡されます。
friendFlag
Boolean
true
:ユーザーがLINE公式アカウントを友だち追加済みで、ブロックしていない。false
:それ以外の場合。
# エラーレスポンス
Promise
がrejectされたときは、LiffError
が渡されます。
戻り値の例
# liff.permanentLink.createUrl()
現在のページのパーマネントリンクを取得します。
パーマネントリンクの形式:
https://liff.line.me/{liffId}/{path}?{query}#{URL fragment}
リクエストの例
# 構文
liff.permanentLink.createUrl()
# 引数
なし
# 戻り値
現在のページのパーマネントリンクが、文字列で返されます。
現在のページのURLが[エンドポイントURL]に指定したURLで始まらない場合、LiffError
例外が発生します。
[LIFF URLの追加情報の処理方法]が「置換(後方互換性モード)」のときは、[エンドポイントURL]に指定したパスやクエリパラメータ(/2020campaign/?key=value
)が、2次リダイレクト先に含まれないことがあります。
その場合、liff.permanentLink.createUrl()
メソッドが上記の条件を満たすため、パーマネントリンクを取得できません。
# liff.permanentLink.setExtraQueryParam()
現在のページのパーマネントリンクに、任意のクエリパラメータを追加できます。
liff.permanentLink.setExtraQueryParam()
を実行するたびに、前回追加したクエリパラメータは破棄されます。
- 追加したクエリパラメータを削除するには、
liff.permanentLink.setExtraQueryParam("")
を実行します。 - 追加したクエリパラメータは、ユーザーが別のページに移動すると破棄されます。
リクエストの例
# 構文
liff.permanentLink.setExtraQueryParam(extraString)
# 引数
extraString
String
追加するクエリパラメータ
# 戻り値
なし
# liff.sendMessages()
ユーザーの代わりに、LIFFアプリが開かれているトーク画面にメッセージを送信します。トーク画面以外でLIFFアプリが開かれた場合は、メッセージは送信できません。
- LIFFアプリをチャネルに追加するときに、
chat_message.write
スコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、メッセージは送信できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。 liff.sendMessages()
は、外部ブラウザでは利用できません。
リクエストの例
# 構文
liff.sendMessages(messages)
# 引数
messages
Objectの配列
メッセージオブジェクト
最大件数:5
Messaging APIの以下のタイプのメッセージを送信できます。
- テキストメッセージ
- スタンプメッセージ
- 画像メッセージ
- 動画メッセージ
- 音声メッセージ
- 位置情報メッセージ
- テンプレートメッセージ。ただし、設定できるアクションはURIアクションのみです。
- Flex Message
ボットのLINE公式アカウントが参加しているトークでメッセージが送信されると、LINEプラットフォームからボットサーバーにWebhookイベントが送信されます。liff.sendMessages()
メソッドで画像、動画、および音声のメッセージが送信されると、結果として送信されるWebhookイベントのcontentProvider.type
プロパティの値はexternal
になります。詳しくは、『Messaging APIリファレンス』の「メッセージイベント」を参照してください。
# 戻り値
Promise
オブジェクトが返されます。
- メッセージの送信が成功すると、
Promise
がresolveされます。値は渡されません。 - メッセージの送信が失敗すると、
Promise
がrejectされ、LiffError
が渡されます。
# liff.openWindow()
指定したURLをLINE内ブラウザまたは外部ブラウザで開きます。
liff.openWindow()
の外部ブラウザでの利用は、保証対象外です。- iOS版LINEが10.16.0より前のバージョンの場合、
url
プロパティに、クエリパラメータ(?key=value
)が含まれず、かつURLフラグメント(#URL-fragment
)が設定されていると、URLフラグメントに不正な値が追加されたURLにリンクされます。以下の表は、url
プロパティにhttps://example.com#URL-fragment
を設定した場合のリンク先の例です。
iOS版LINEバージョン | リンク先 |
---|---|
10.16.0より前のバージョン | https://example.com#URL-fragment?is_liff_external_open_window=false |
10.16.0以降のバージョン | https://example.com#URL-fragment |
リクエストの例
# 構文
liff.openWindow(params)
# 引数
params
Object
パラメータオブジェクト
params.url
String
URL。絶対パスで指定します。
params.external
Boolean
指定したURLを外部ブラウザで開くかどうかを、以下のどちらかの値で指定します。デフォルト値はfalse
です。
true
:外部ブラウザで開きます。false
:LINE内ブラウザで開きます。
# 戻り値
なし
# liff.shareTargetPicker()
ターゲットピッカー(グループまたは友だちを選択する画面)を表示し、ターゲットピッカーで選択した相手に、開発者が作成したメッセージを送信します。このメッセージは、ユーザーが送信したかのように、グループまたは友だちに表示されます。
- ターゲットピッカーを表示するには、LINE Developersコンソールでシェアターゲットピッカーをオンにしてください。詳しくは、『LIFFドキュメント』の「シェアターゲットピッカーを利用するには」を参照してください。
- 外部ブラウザで利用する場合は、
liff.login()
を呼び出して、LINEログインの処理(ウェブログイン)を行ってから、liff.shareTargetPicker()
を呼び出します。
- ターゲットピッカーは、iOS版とAndroid版のLINE 10.3.0以降でサポートされます。
liff.shareTargetPicker()
を実行する前に、liff.isApiAvailable()
を実行すると、LIFFアプリを起動した環境でターゲットピッカーが使用可能であることを確認できます。
リクエストの例
# 構文
liff.shareTargetPicker(messages)
# 引数
messages
Objectの配列
メッセージオブジェクト
最大件数:5
Messaging APIの以下のタイプのメッセージを送信できます。
- テキストメッセージ
- 画像メッセージ
- 動画メッセージ
- 音声メッセージ
- 位置情報メッセージ
- テンプレートメッセージ。ただし、設定できるアクションはURIアクションのみです。
- Flex Message
# 戻り値(LINE 10.3.0~10.10.0)
Promise
オブジェクトが返されます。
ターゲットピッカーが表示されると、
Promise
がresolveされます。ターゲットピッカーが表示される前に問題が発生した場合は、
Promise
がrejectされ、LiffError
が渡されます。LiffErrorオブジェクトについては、「LIFF SDKのエラー」を参照してください。
- 表示されたターゲットピッカーでユーザーが送信先を選択しなかった場合など、ターゲットピッカーが表示されたあとの状況は検知できません。
Promise
がresolveした場合とrejectした場合のコールバック関数内で、alert()
を実行すると一部端末で正しく動作しません。
# 戻り値(LINE 10.11.0~)
Promise
オブジェクトが返されます。
正しくメッセージが送信されると、
Promise
がresolveされ、以下のプロパティを持つオブジェクトが渡されます。status
String
常に
success
です。メッセージを送信する前に、ユーザーがキャンセルしてターゲットピッカーを閉じると、
Promise
がresolveされますが、オブジェクトは渡されません。ターゲットピッカーが表示される前に問題が発生した場合は、
Promise
がrejectされ、LiffError
が渡されます。LiffErrorオブジェクトについては、「LIFF SDKのエラー」を参照してください。
Promise
がresolveした場合とrejectした場合のコールバック関数内で、alert()
を実行すると一部端末で正しく動作しません。
# liff.scanCode()
LINEのQRコードリーダーを起動し、読み取った文字列を取得します。QRコードリーダーを起動するには、あらかじめLINE Developersコンソールで、LIFFアプリにScanQR
権限を付与する必要があります。
技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.scanCode()
はundefined
になります。サンプルコードのように、関数の存在を確認してから、使用してください。
- LIFFアプリをチャネルに追加するときに、[ScanQR]をオンにしてください。[ScanQR]の設定は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
liff.scanCode()
は、外部ブラウザでは利用できません。
リクエストの例
# 構文
liff.scanCode()
# 引数
なし
# 戻り値
Promise
オブジェクトが返されます。
LINEのQRコードリーダーで文字列が読み取れると、Promise
がresolveされ、読み取った文字列を含むオブジェクトが渡されます。
value
String
QRコードリーダーで読み取った文字列
# liff.closeWindow()
LIFFアプリを閉じます。
このメソッドは、LIFF SDKバージョンが2.4.0以上、ユーザーのLINEバージョンが10.15.0以上の場合のみ、liff.init()
によるLIFFアプリの初期化が終了する前でも実行できます。
liff.closeWindow()
の外部ブラウザでの利用は、保証対象外です。
リクエストの例
# 構文
liff.closeWindow()
# 引数
なし
# 戻り値
なし
# liff.initPlugins()
プラグインを有効化します。
たとえば、Bluetoothプラグインを有効化すると、Bluetoothプラグインが提供するクライアントAPI(liff.bluetooth.*)が使用できます。
リクエストの例
# 構文
liff.initPlugins(pluginNames)
# 引数
pluginNames
Stringの配列
プラグインの名前。以下のいずれかの値を指定します。
bluetooth
※なお、Bluetoothプラグインは、Android版のLINEまたはiOS版のLINE 9.19.0未満の場合のみ、有効化できます。iOS版のLINE 9.19.0以降では 有効化に失敗し、FORBIDDENエラーが返されます。
# 戻り値
Promise
オブジェクトが返されます。
- プラグインの有効化が成功すると、
Promise
がresolveされます。 - プラグインの有効化に失敗すると、
Promise
がrejectされ、エラー情報が渡されます。
# liff.bluetooth.getAvailability()
技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.getAvailability()
の提供を一時停止しています。
Bluetoothプラグインが利用できるかどうかを確認します。このメソッドを実行すると、以下の内容が確認されます。
チャネルに追加したLIFFアプリのBluetoothサポートの有無
注意チャネルに追加したLIFFアプリのBLE機能を有効にしていないと、Bluetoothプラグインは有効化できません。
スマートフォンのBluetooth設定
ユーザーがLINE Thingsの利用規約に同意していること
ユーザーがLINEをAndroidで使用している場合は、位置情報の取得権限
あらかじめliff.initPlugins()を使用して、Bluetoothプラグインを有効化してください。
リクエストの例
# 構文
liff.bluetooth.getAvailability()
# 引数
なし
# 戻り値
Promise
オブジェクトが返されます。
Bluetoothプラグインが利用できるかどうかが確認されると、Promise
がresolveされ、Bluetoothプラグインが利用できるかどうかを示すBoolean
オブジェクトが渡されます。
# liff.bluetooth.requestDevice()
技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.requestDevice()
の提供を一時停止しています。
連携済みのデバイスをスキャンし、情報を取得します。
フィルターを使って、アドバタイズメントパケットを受け入れるデバイスを制限できます。
あらかじめliff.initPlugins()を使用して、Bluetoothプラグインを有効化してください。
リクエストの例
# 構文
liff.bluetooth.requestDevice(options)
# 引数
options
Object
フィルターを表すRequestDeviceOptions
オブジェクト。省略したときは、すべてのデバイスからのアドバタイズメントパケットを受け入れます。
# データオブジェクト
# RequestDeviceOptionsオブジェクト
filters
Objectの配列
# LINEBluetoothRequestDeviceFilterオブジェクト
deviceId
String
アドバタイズメントパケットを受け入れるデバイスのデバイスID
# 戻り値
Promise
オブジェクトが返されます。
連携済みのデバイスをスキャンし、情報を取得できると、Promise
がresolveされ、デバイスの情報を示すBluetoothDevice
オブジェクトが渡されます。
# データオブジェクト
# BluetoothDeviceオブジェクト
id
String
デバイスID
name
String
デバイス名
gatt
Object
watchingAdvertisements
Boolean
アドバタイズメントパケットの監視状況(※)
メソッド | 戻り値 | 説明 |
---|---|---|
watchAdvertisements | Promise <void> | アドバタイズメントパケットの受け入れを開始します。(※) |
unwatchAdvertisements | void | アドバタイズメントパケットの受け入れを停止します。(※) |
addEventListener | void | イベントリスナーを登録します。advertisementreceived イベント(※)とgattserverdisconnected イベントに、イベントリスナーを登録できます。 |
removeEventListener | void | 登録済みのイベントリスナーを削除します。advertisementreceived イベント(※)とgattserverdisconnected イベントに登録したイベントリスナーを削除できます。 |
※試験的に実装している機能です。これらの機能は予告なく変更、または停止される可能性があります。
# BluetoothRemoteGATTServerオブジェクト
デバイスと通信するには、GATTサーバー(汎用アトリビュートプロファイルサーバー)を表すBluetoothRemoteGATTServer
オブジェクトを使用します。
liff.bluetooth.requestDevice()
実行後、Promise
がresolveすると、BluetoothDevice
オブジェクトのgatt
プロパティから、BluetoothRemoteGATTServer
にアクセスできます。
device
Object
connected
Boolean
接続している場合はtrue
。接続していない場合はfalse
メソッド | 戻り値 | 説明 |
---|---|---|
connect | Promise <BluetoothRemoteGATTService> | デバイスと接続します。 |
disconnect | void | デバイスのGATTサーバーから切断します。 |
getPrimaryService(serviceUUID) | Promise <BluetoothRemoteGATTService> | GATTサーバーのプライマリサービスを取得します。serviceUUIDには、128ビットのUUIDを文字列で指定します。 注:このメソッドはUUIDを検証しません。UUIDの検証は、characteristicの読み込み、書き込み、通知の開始、通知の停止を実行する際に行われます。 |
# BluetoothRemoteGATTServiceオブジェクト
BluetoothRemoteGATTService
オブジェクトは、characteristicを取得するためのオブジェクトです。
device
Object
uuid
String
GATT Service UUID
メソッド | 戻り値 | 説明 |
---|---|---|
getCharacteristic(characteristicUUID) | Promise <BluetoothRemoteGATTCharacteristic> | characteristicを取得します。characteristicUUIDには、128ビットのUUIDを文字列で指定します。 注:このメソッドはUUIDを検証しません。UUIDの検証は、characteristicの読み込み、書き込み、通知の開始、通知の停止を実行する際に行われます。 |
# BluetoothRemoteGATTCharacteristicオブジェクト
BluetoothRemoteGATTCharacteristic
オブジェクトは、デバイスのcharacteristicの読み込み、書き込み、通知の開始、通知の停止を実行するためのオブジェクトです。
service
Object
uuid
String
UUID
value
Object
メソッド | 戻り値 | 説明 |
---|---|---|
readValue | Promise <DataView (opens new window)> | characteristicの値を読み取ります。 |
writeValue(value) | Promise <void> | characteristicにBufferSource (opens new window)の値を書き込みます。 |
startNotifications | Promise <BluetoothRemoteGATTCharacteristic> | characteristic変更の通知を開始します。 |
stopNotifications | Promise <BluetoothRemoteGATTCharacteristic> | characteristic変更の通知を停止します。 |
addEventListener | void | イベントリスナーを登録します。target プロパティを含むcharacteristicvaluechanged イベントに、イベントリスナーを登録できます。 |
removeEventListener | void | 登録済みのイベントリスナーを削除します。characteristicvaluechanged イベントに登録したイベントリスナーを削除できます。 |
readValue()
writeValue()
startNotifications()
stopNotifications()
メソッドは、UUIDとプロパティを検証します。存在しないUUIDやプロパティを指定した場合は、エラーが発生します。
リクエストの例
# イベント
# advertisementreceivedイベント
アドバタイズメントパケットを受信すると、advertisementreceived
イベントが発生します。
advertisementreceived
イベントは、試験的に実装している機能です。この機能は予告なく変更、または停止される可能性があります。
device
Object
name
String
デバイス名
rssi
Number
RSSI
manufacturerData
Object
Map<Number, DataView>オブジェクト。会社識別コード(Company Identifier Code)をDataView
オブジェクトにマップしたデータです。
# gattserverdisconnectedイベント
さまざまな理由でBluetooth接続が切断されると、gattserverdisconnected
イベントが発生します。必ずイベントリスナーを登録してください。
リクエストの例
# characteristicvaluechangedイベント
characteristicが変更されると、characteristicvaluechanged
イベントが発生します。
# liff.bluetooth.referringDevice
技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.referringDevice
の提供を一時停止しています。
LIFFアプリがデバイス経由で起動された場合、liff.bluetooth.referringDeviceに、そのデバイスの情報を示すBluetoothDevice
オブジェクトが設定されます。