# LIFF v2 APIリファレンス

# クライアントAPI

# 動作環境

LIFF v2の動作環境については、『LIFFドキュメント』の「概要」を参照してください。

なお、LIFFアプリをLIFFブラウザで開いた場合と、外部ブラウザで開いた場合では、使用できる機能が異なります。たとえば、liff.scanCode()は、外部ブラウザでは利用できません。詳しくは、各クライアントAPIの説明をご覧ください。

OpenChatでのLIFFアプリの利用はサポートされていません

現在のところ、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
  • ユーザーが認可しませんでした。
  • アクセストークンを指定せずにAPIが呼ばれました。
  • LINEログインを行う前に、シェアターゲットピッカーを呼び出しました。
FORBIDDEN
  • 必要な権限がありません。
  • サポートされていない環境で機能を利用しようとしました。
INVALID_CONFIG 無効な設定です。
  • LINEログインを行うには、liffIdを指定する必要があります。
  • liff.permanentLink.createUrl()を実行したページのURLが、[エンドポイントURL]に指定したURLで始まりません。
INVALID_ID_TOKEN IDトークンが正規のものであることを確認できませんでした。
EXCEPTION_IN_SUBWINDOW サブウィンドウで問題が発生しました。
  • ターゲットピッカー(グループまたは友だちを選択する画面)を表示後、10分以上操作しなかった場合など
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アプリ初期化前でも実行できます

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アプリを初期化する前でも実行できるメソッド

以下のプロパティおよびメソッドは、liff.init()メソッドを実行する前でも利用できます。
LIFFアプリを初期化する前にLIFFアプリを動作させている環境を取得したり、LIFFアプリ初期化に失敗した際にLIFFアプリを閉じたりできます。

liff.closeWindow()メソッドは、LIFF SDKバージョンが2.4.0以上、ユーザーのLINEバージョンが10.15.0以上の場合のみ、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

  • LIFF SDKが取得したアクセストークンを利用するには、「liff.getAccessToken()」を呼び出します。
  • LIFF SDKが取得したIDトークンのペイロードを利用するには、「liff.getDecodedIDToken()」を呼び出します。
liff.init()メソッドを実行するタイミングに注意してください

ユーザーがエンドポイントURLに初めてリダイレクトされたタイミング(1次リダイレクト先URL)で、liff.init()メソッドを実行してください。 これ以外のタイミングでliff.init()メソッドを実行すると、INIT_FAILEDが返され、LIFFアプリを開けません。 詳しくは、「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

リクエストの例

# 構文

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アプリ初期化前でも実行できます

このメソッドは、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アプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

# 構文

liff.getLanguage()

# 引数

なし

# 戻り値

LIFFアプリを動作させている環境のnavigator.languageで取得できる言語設定が、文字列で返されます。

# liff.getVersion()

LIFF SDKのバージョンを取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

# 構文

liff.getVersion()

# 引数

なし

# 戻り値

LIFF SDKのバージョンが、文字列で返されます。

# liff.getLineVersion()

ユーザーのLINEバージョンを取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

# 構文

liff.getLineVersion()

# 引数

なし

# 戻り値

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

# liff.isInClient()

LIFFアプリを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について

multipleLiffTransitionは、LIFFアプリを閉じずに別のLIFFアプリを開くことが可能かの状態を表すプロパティで、APIの名前ではありません。

# 戻り値

指定したAPIが、現在の環境で使用可能かどうかが返されます。

戻り値 説明
true 使用可能
false 使用不可能。以下の場合は、falseが返されます。
  • APIが対応していないLINEバージョンでLIFFアプリを起動した場合
  • 使用するために特別な同意が必要なAPIにもかかわらず、同意していない場合
注意

LIFFアプリを外部ブラウザで利用する場合は、常にtrueを返します。

# liff.login()

外部ブラウザおよびLINE内ブラウザ上で、LINEログインの処理(ウェブログイン)を行います。

注意

LIFFブラウザの場合、liff.init()実行時に自動でLINEログインの処理が実行されるため、liff.login()は利用できません。

リクエストの例

# 構文

liff.login(loginConfig)

# 引数

loginConfig

Object

任意

LINEログインの設定

loginConfig.redirectUri

String

任意

LINEログイン後にLIFFアプリで表示するURL。デフォルト値は、LIFFアプリをチャネルに追加したときに設定したエンドポイントURLです。エンドポイントURLの設定方法について詳しくは、『LIFFドキュメント』の「LIFFアプリをチャネルに追加する」を参照してください。

URL検証機能

redirectUriを指定した場合、アクセスしたLIFF URLのチャネルに設定された[エンドポイントURL]が、redirectUriに指定したURLと一致しているか検証します。

URL一致の判定基準について詳しくは、『LIFFドキュメント』の「URL検証機能」を参照してください。

# 戻り値

なし

# liff.logout()

ログアウトします。

リクエストの例

# 構文

liff.logout()

# 引数

なし

# 戻り値

なし

# liff.getAccessToken()

LIFF SDKが取得した「現在のユーザーのアクセストークン」を取得します。

LIFFアプリからサーバーにユーザー情報を送信するときに、このAPIで取得したアクセストークンを利用できます。 サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。

アクセストークンの有効性

アクセストークンは、発行後12時間有効です。 なお、ユーザーがLIFFアプリを閉じると、アクセストークンは無効化されます。

LIFF SDKがアクセストークンを取得するタイミング
  • LIFFブラウザでLIFFアプリを起動した場合は、liff.init()を呼び出したときに、LIFF SDKがアクセストークンを取得します。
  • 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがアクセストークンを取得します。
    1. LIFFアプリで、liff.login()を呼び出す。
    2. ユーザーがLINEログインする。
    3. LIFFアプリで、再度liff.init()を呼び出す。

リクエストの例

# 構文

liff.getAccessToken()

# 引数

なし

# 戻り値

現在のユーザーのアクセストークンを文字列で返します。

# liff.getIDToken()

LIFF SDKが取得した「現在のユーザーの生のIDトークン」を取得します。IDトークンは、ユーザー情報を含むJSONウェブトークン(JWT)です。

LIFFアプリからサーバーにユーザー情報を送信するときに、このAPIで取得したIDトークンを利用できます。 サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。

LIFF SDKがIDトークンを取得するタイミング
  • LIFFブラウザでLIFFアプリを起動した場合は、liff.init()を呼び出したときに、LIFF SDKがIDトークンを取得します。
  • 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがIDトークンを取得します。
    1. LIFFアプリで、liff.login()を呼び出す。
    2. ユーザーがLINEログインする。
    3. LIFFアプリで、再度liff.init()を呼び出す。

リクエストの例

# 構文

liff.getIDToken()

# 引数

なし

# 戻り値

生のIDトークンが返されます。

nullを返す場合があります

LIFFアプリをチャネルに追加するときに、openidスコープを選択しなかった場合は、nullが返されます。

# liff.getDecodedIDToken()

LIFF SDKが取得したIDトークンの「ペイロード」を取得します。ペイロードには、ユーザーの表示名、プロフィール画像のURL、メールアドレスが含まれます。

LIFFアプリでユーザーの表示名などを利用する場合に、このAPIを利用してください。

ユーザー情報をサーバーに送信しないでください

このAPIで取得したユーザー情報をサーバーに送信しないでください。 サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。

LIFF SDKがIDトークンを取得するタイミング
  • LIFFブラウザでLIFFアプリを起動した場合は、liff.init()を呼び出したときに、LIFF SDKがIDトークンを取得します。
  • 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがIDトークンを取得します。
    1. LIFFアプリで、liff.login()を呼び出す。
    2. ユーザーがLINEログインする。
    3. LIFFアプリで、再度liff.init()を呼び出す。

リクエストの例

# 構文

liff.getDecodedIDToken()

# 引数

なし

# 戻り値

IDトークンのペイロードが返されます。

IDトークンのペイロードについて詳しくは、「IDトークンからプロフィール情報とメールアドレスを取得する」の「ペイロード」を参照してください。

nullを返す場合があります

LIFFアプリをチャネルに追加するときに、openidスコープを選択しなかった場合は、nullが返されます。

IDトークンのペイロードの例

# liff.getContext()

LIFFアプリが起動された画面(1対1のトーク、グループ、トークルーム、または外部ブラウザ)に関する情報を取得します。 なお、1対1のトーク、グループ、およびトークルームの場合は、一意に識別できる値も取得できます。

リクエストの例

# 構文

liff.getContext()

# 引数

なし

# 戻り値

各種APIを呼び出すために必要な情報を含むデータオブジェクトが返されます。

type

String

LIFFアプリが起動された画面の種類。以下のいずれかの値が含まれます。

  • utou:1対1のトーク
  • group:グループ
  • room:トークルーム
  • external:外部ブラウザ
  • none:LINEの1対1のトーク、グループ、トークルーム、外部ブラウザ以外から起動した場合。例:ウォレットタブ

viewType

String

LIFFアプリの画面サイズ。typeプロパティがutougroup、またはroomの場合に、以下のいずれかの値が含まれます。

  • compact
  • tall
  • full

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

userId

String

ユーザーID

utouId

String

1対1トークID。typeプロパティがutouの場合に含まれます。

groupId

String

グループID。typeプロパティがgroupの場合に含まれます。

roomId

String

トークルームID。typeプロパティがroomの場合に含まれます。

availability.shareTargetPicker.permission

Boolean

LIFFアプリを起動した環境で、liff.shareTargetPicker()が使用可能かどうかを表します。

  • true:liff.shareTargetPicker()が使用可能。
  • false:それ以外の場合。

availability.shareTargetPicker.minVer

String

liff.shareTargetPicker()が使用可能なLINEの最小バージョン

availability.multipleLiffTransition.permission

Boolean

LIFFアプリを起動した環境で、LIFFアプリを閉じずにliff.openWindow()で別のLIFFアプリへ遷移することが可能かどうかを表します。

  • trueliff.openWindow()でLIFFアプリを閉じずに別のLIFFアプリを開くことが可能。
  • false:それ以外の場合。

availability.multipleLiffTransition.minVer

String

LIFFアプリを閉じずに別のLIFFアプリを開くことが可能なLINEの最小バージョン

戻り値の例

# liff.getProfile()

現在のユーザーのプロフィールを取得します。

リクエストの例

# 構文

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.getFriendship()

# 引数

なし

# 戻り値

Promiseオブジェクトが返されます。

友だち関係を取得できると、Promiseがresolveされ、友だち関係に関する情報が渡されます。

friendFlag

Boolean

  • true:ユーザーがLINE公式アカウントを友だち追加済みで、ブロックしていない。
  • false:それ以外の場合。
# エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

戻り値の例

現在のページのパーマネントリンクを取得します。

パーマネントリンクの形式:

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.sendMessages()は、外部ブラウザでは利用できません。

リクエストの例

# 構文

liff.sendMessages(messages)

# 引数

messages

Objectの配列

必須

メッセージオブジェクト
最大件数:5
Messaging APIの以下のタイプのメッセージを送信できます。

ボットの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()

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

注意
ターゲットピッカーの動作環境について
  • ターゲットピッカーは、iOS版とAndroid版のLINE 10.3.0以降でサポートされます。
  • liff.shareTargetPicker()を実行する前に、liff.isApiAvailable()を実行すると、LIFFアプリを起動した環境でターゲットピッカーが使用可能であることを確認できます。

リクエストの例

# 構文

liff.shareTargetPicker(messages)

# 引数

messages

Objectの配列

必須

メッセージオブジェクト
最大件数:5
Messaging APIの以下のタイプのメッセージを送信できます。

# 戻り値(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以降では使用できません

技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.scanCode()undefinedになります。サンプルコードのように、関数の存在を確認してから、使用してください。

注意

liff.scanCode()は、外部ブラウザでは利用できません。

リクエストの例

# 構文

liff.scanCode()

# 引数

なし

# 戻り値

Promiseオブジェクトが返されます。

LINEのQRコードリーダーで文字列が読み取れると、Promiseがresolveされ、読み取った文字列を含むオブジェクトが渡されます。

value

String

QRコードリーダーで読み取った文字列

# liff.closeWindow()

LIFFアプリを閉じます。

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以降では使用できません

技術的な問題があり、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以降では使用できません

技術的な問題があり、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以降では使用できません

技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.referringDeviceの提供を一時停止しています。

LIFFアプリがデバイス経由で起動された場合、liff.bluetooth.referringDeviceに、そのデバイスの情報を示すBluetoothDeviceオブジェクトが設定されます。