# LIFF v1 APIリファレンス
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
# クライアントAPI
# 動作環境
LIFF v1をサポートするOSとLINEのバージョンは以下のとおりです。
- iOS:iOS 8以降。iOS 9以降ではWKWebView (opens new window)、iOS 9未満ではUIWebView (opens new window)が使用されます。
- Safari 8以降
- Android:4.2(Jelly Bean MR1、API level 17)以降
- Chrome 33以降
- LINE:バージョン7.14以降
現在のところ、OpenChatではLIFFアプリの利用は正式にサポートされていません。たとえば、LIFFアプリからプロフィール情報を取得できない場合があります。
# LIFF SDKのエラー
LIFF SDKのエラーはLiffErrorオブジェクトで返されます。
エラーの例
# LiffErrorオブジェクト
code
String
エラーコード
message
String
エラーメッセージ。定義されたメッセージが存在する場合に返されます。
# エラー内容
エラーコード | エラーメッセージ | 説明 |
---|---|---|
INIT_FAILED | Failed to init LIFF SDK | LIFF SDKのJavaScriptリソースをロードできませんでした。 |
INIT_FAILED | Current environment is not supported. Open it with LINE | サポートされていない環境でLIFFアプリを開こうとしました。 |
INIT_FAILED | Could not authenticate LIFF app | JSON Webトークン(JWT)が無効または存在しません。LINEでLIFFを起動してください。また、JWTは必ず指定してください。 |
INVALID_ARGUMENT | - | 引数が無効です。 |
INTERNAL_ERROR | - | 内部エラーです。 |
THINGS_NO_LINKED_DEVICES | There are no linked devices. | デバイスがありません。 |
BLUETOOTH_CONNECT_FAILED | Failed to connect to device. | デバイスとの接続に失敗しました。 |
BLUETOOTH_ALREADY_CONNECTED | The device is already connected. | デバイスは接続済みです。 |
BLUETOOTH_CONNECTION_LOST | The device has been disconnected. | デバイスが接続されていません。 |
BLUETOOTH_UNSUPPORTED_OPERATION | The operation is not supported on this characteristic. | 指定したcharacteristicでは、指定した操作がサポートされていません。 |
BLUETOOTH_SERVICE_NOT_FOUND | The service is not found in the GATT server. | 指定したサービスが、GATTサーバーに存在しません。 |
BLUETOOTH_CHARACTERISTIC_NOT_FOUND | The characteristic is not found in the service. | 指定したcharacteristicが、サービスに存在しません。 |
# liff.init()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
LIFFアプリを初期化します。このメソッドを実行すると、LIFF SDKの他のメソッドを実行できるようになります。
リクエストの例
# 構文
liff.init(successCallback, errorCallback)
# 引数
successCallback
Function
呼び出しの成功時にデータオブジェクトを返すコールバック
errorCallback
Function
呼び出しの失敗時にエラーオブジェクトを返すコールバック
# 戻り値
コールバックの第一引数に、各種APIを呼び出すために必要な情報を含むデータオブジェクトが渡されます。
戻り値の例
# データオブジェクト
language
String
LINEの言語設定
context.type
String
コンテキストのタイプ。LINE内でLIFFアプリが開かれた場所を示します。以下のいずれかの値が含まれます。
utou
:1対1のトークgroup
:グループトークroom
:複数人トークnone
:トーク画面以外
context.viewType
String
context.userId
String
ユーザーID。
context.utouId
String
1対1トークID。context.type
プロパティがutou
の場合に含まれます。
context.roomId
String
トークルームID。context.type
プロパティがroom
の場合に含まれます。
context.groupId
String
グループID。context.type
プロパティがgroup
の場合に含まれます。
# liff.openWindow()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
指定した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.getAccessToken()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
LIFF SDKが取得した「現在のユーザーのアクセストークン」を取得します。
LIFFアプリからサーバーにユーザー情報を送信するときに、このAPIで取得したアクセストークンを利用できます。 サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。
アクセストークンは、発行後12時間有効です。 なお、ユーザーがLIFFアプリを閉じると、アクセストークンは無効化されます。
- LIFFブラウザでLIFFアプリを起動した場合は、
liff.init()
を呼び出したときに、LIFF SDKがアクセストークンを取得します。 - 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがアクセストークンを取得します。
- LIFFアプリで、
liff.login()
を呼び出す。 - ユーザーがログインする。
- LIFFアプリで、再度
liff.init()
を呼び出す。
- LIFFアプリで、
リクエストの例
# 構文
liff.getAccessToken()
# 引数
なし
# 戻り値
現在のユーザーのアクセストークンを文字列で返します。
# liff.getProfile()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
現在のユーザーのプロフィールを取得します。
リクエストの例
# 構文
liff.getProfile()
# 引数
なし
# 戻り値
Promise
オブジェクトが返されます。
Promise
がresolveされると、ユーザーのプロフィール情報を含むオブジェクトが渡されます。
userId
String
ユーザーID
displayName
String
表示名
pictureUrl
String
画像のURL。ユーザーが設定していない場合は返されません。
statusMessage
String
ステータスメッセージ。ユーザーが設定していない場合は返されません。
このメソッドは内部でaxios (opens new window)を使用して、LINEログインAPIを呼び出します。エラー制御についてはaxiosのドキュメントと『LINEログイン v2.1 APIリファレンス』の「ステータスコード」を参照してください。
ユーザーのプロフィール情報の例
# liff.sendMessages()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
ユーザーの代わりに、LIFFアプリが開かれているトーク画面にメッセージを送信します。この機能は1対1のトークルームから起動したLIFFアプリでのみ利用できます。
LIFFアプリをチャネルに追加するときに、chat_message.write
スコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、メッセージは送信できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。
liff.sendMessages()
メソッドは、ユーザー同士、またはLINE公式アカウントとユーザーの1対1のトークルーム内で、LIFFアプリを開くためのURLスキームでLIFFアプリを起動した場合のみ利用できます。
そのため、以下の場合はliff.sendMessages()
メソッドが利用できず、HTTPステータスコード403
のエラーが発生します。
- KeepおよびKeepメモ (opens new window)の機能を利用してLIFFアプリにアクセスした場合
- Webサイトのリダイレクト処理などによりLIFFアプリを開くためのURLスキームにアクセスした場合
- LIFFアプリから別のLIFFアプリを開いた場合。詳しくは、『LIFFドキュメント』の「LIFFアプリから別のLIFFアプリを開いた場合の動作について(LIFF間遷移)」を参照してください。
リクエストの例
# 構文
liff.sendMessages(messages)
# 引数
messages
Objectの配列
メッセージオブジェクト
最大件数:5
Messaging APIの以下のタイプのメッセージを送信できます。
- テキストメッセージ
- スタンプメッセージ
- 画像メッセージ
- 動画メッセージ
- 音声メッセージ
- 位置情報メッセージ
- テンプレートメッセージ。ただし、設定できるアクションはURIアクションのみです。
- Flex Message。ただし、設定できるアクションはURIアクションのみです。
ボットのLINE公式アカウントが参加しているトークでメッセージが送信されると、LINEプラットフォームからボットサーバーにWebhookイベントが送信されます。liff.sendMessages()
メソッドで画像、動画、および音声のメッセージが送信されると、結果として送信されるWebhookイベントのcontentProvider.type
プロパティの値はexternal
になります。詳しくは、『Messaging APIリファレンス』の「メッセージイベント」を参照してください。
# 戻り値
メッセージの送信が成功した場合は、戻り値はありません。
このメソッドは内部でaxios (opens new window)を使用して、LINEプラットフォームを呼び出します。エラー制御についてはaxiosのドキュメントと以下の「ステータスコード」を参照してください。
# ステータスコード
ステータスコード | 説明 |
---|---|
400 | メッセージが無効です。 |
401 | 認証に失敗しました。 |
403 | アクセストークンに適切な権限がありません。以下のような原因が考えられます。
|
# liff.closeWindow()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
LIFFアプリを閉じます。
リクエストの例
# 構文
liff.closeWindow()
# 引数
なし
# 戻り値
なし
# liff.initPlugins()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
プラグインを有効化します。
たとえば、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()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
技術的な問題があり、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()
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
技術的な問題があり、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
LIFF v1をお使いの場合は、必ずLIFF v2への移行を行なってください。 LIFF v2への移行について詳しくは、2021年4月5日のニュースの「LIFF v2に移行する」を参照してください。
また、2021年10月1日以降、LIFF v1に関連するドキュメントは予告なく削除され、アクセスできなくなります。
技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.referringDevice
の提供を一時停止しています。
LIFFアプリがデバイス経由で起動された場合、liff.bluetooth.referringDeviceに、そのデバイスの情報を示すBluetoothDevice
オブジェクトが設定されます。
# サーバーAPI
こちらに記載されていたAPIリファレンスは、「サーバーAPI」に移動しました。