# プラガブルSDK ## プラガブルSDKとは プラガブルSDKとは、LIFF SDKに含めるLIFF APIを選択できる機能です。 LIFFアプリで利用するLIFF APIのみをLIFF SDKに含めることで、LIFF SDKのファイルサイズを最大約34%削減できます。その結果、LIFFアプリの表示速度を向上させることができます。 ## プラガブルSDKの使用条件 LIFF v2.22.0以降のnpmパッケージ版でのみ利用できます。CDN版では利用できません。npmパッケージの利用方法について詳しくは、「[npmパッケージを利用する](https://developers.line.biz/ja/docs/liff/developing-liff-apps/#use-npm-package)」を参照してください。 ## プラガブルSDKの使用方法 プラガブルSDKの使用方法は、以下のとおりです。 - [liffオブジェクトをインポートする](https://developers.line.biz/ja/docs/liff/pluggable-sdk/#import-liff-object) - [LIFF APIを有効化する](https://developers.line.biz/ja/docs/liff/pluggable-sdk/#activate-liff-api) ### liffオブジェクトをインポートする まず、`liff`オブジェクトを`@line/liff/core`からインポートします。 ```js import liff from "@line/liff/core"; ``` この`liff`オブジェクトには、以下のプロパティとメソッドのみが含まれています。 - [`liff.id`](https://developers.line.biz/ja/reference/liff/#id)プロパティ - [`liff.ready`](https://developers.line.biz/ja/reference/liff/#ready)プロパティ - [`liff.init()`](https://developers.line.biz/ja/reference/liff/#initialize-liff-app)メソッド - [`liff.getVersion()`](https://developers.line.biz/ja/reference/liff/#get-version)メソッド - [`liff.use()`](https://developers.line.biz/ja/reference/liff/#use)メソッド 上記以外のLIFF APIを利用するには、対応するモジュールをインポートします。以下の例では、[`liff.getOS()`](https://developers.line.biz/ja/reference/liff/#get-os)メソッドと[`liff.getAppLanguage()`](https://developers.line.biz/ja/reference/liff/#get-app-language)メソッドに対応するモジュールをインポートしています。 ```js import liff from "@line/liff/core"; import GetOS from "@line/liff/get-os"; import GetAppLanguage from "@line/liff/get-app-language"; ``` 各LIFF APIに対応するモジュールについては、「[LIFF APIと対応するモジュール一覧](https://developers.line.biz/ja/docs/liff/pluggable-sdk/#liff-api-and-module-list)」を参照してください。 ### LIFF APIを有効化する 次に、インポートしたLIFF APIのモジュールを`liff.use()`メソッドに渡し、LIFF APIを有効化します。LIFF APIのモジュールはクラスで定義されているため、`liff.use()`メソッドにインスタンスを渡す必要があります。 ```js import liff from "@line/liff/core"; import GetOS from "@line/liff/get-os"; import GetAppLanguage from "@line/liff/get-app-language"; liff.use(new GetOS()); liff.use(new GetAppLanguage()); ``` LIFF APIを有効化すると、LIFF APIを利用できるようになります。 以下の例では、有効化した`liff.getOS()`メソッドと`liff.getAppLanguage()`メソッドは利用できますが、有効化していない`liff.login()`メソッドは利用できません。 ```js import liff from "@line/liff/core"; import GetOS from "@line/liff/get-os"; import GetAppLanguage from "@line/liff/get-app-language"; liff.use(new GetOS()); liff.use(new GetAppLanguage()); liff.init({ liffId: "123456-abcedfg", }); liff.getOS(); // 利用できる liff.getAppLanguage(); // 利用できる liff.login(); // 利用できない ``` ## プラガブルSDKの注意事項 技術的な制約から、`liff.use()`メソッドは`liff.init()`メソッドより前に実行してください。`liff.init()`メソッドを実行した後に`liff.use()`メソッドを実行した場合の動作は保証されません。 ### liff.use()メソッドの正しい実行例 ```js import liff from "@line/liff/core"; import GetOS from "@line/liff/get-os"; // liff.use()メソッドをliff.init()メソッドより前に実行している liff.use(new GetOS()); liff.init({ liffId: "123456-abcedfg", }); ``` ### liff.use()メソッドの間違った実行例 ```js import liff from "@line/liff/core"; import GetOS from "@line/liff/get-os"; liff.init({ liffId: "123456-abcedfg", }); // liff.use()メソッドをliff.init()メソッドより後に実行している liff.use(new GetOS()); ``` ## LIFF APIと対応するモジュール一覧 | LIFF API | モジュール | | --- | --- | | [`liff.getOS()`](https://developers.line.biz/ja/reference/liff/#get-os) | `@line/liff/get-os` | | [`liff.getAppLanguage()`](https://developers.line.biz/ja/reference/liff/#get-app-language) | `@line/liff/get-app-language` | | [`liff.getLanguage()`](https://developers.line.biz/ja/reference/liff/#get-language)(非推奨) | `@line/liff/get-language` | | [`liff.getLineVersion()`](https://developers.line.biz/ja/reference/liff/#get-line-version) | `@line/liff/get-line-version` | | [`liff.getContext()`](https://developers.line.biz/ja/reference/liff/#get-context) | `@line/liff/get-context` | | [`liff.isInClient()`](https://developers.line.biz/ja/reference/liff/#is-in-client) | `@line/liff/is-in-client` | | [`liff.isLoggedIn()`](https://developers.line.biz/ja/reference/liff/#is-logged-in) | `@line/liff/is-logged-in` | | [`liff.isApiAvailable()`](https://developers.line.biz/ja/reference/liff/#is-api-available) | `@line/liff/is-api-available` | | [`liff.login()`](https://developers.line.biz/ja/reference/liff/#login) | `@line/liff/login` | | [`liff.logout()`](https://developers.line.biz/ja/reference/liff/#logout) | `@line/liff/logout` | | [`liff.getAccessToken()`](https://developers.line.biz/ja/reference/liff/#get-access-token) | `@line/liff/get-access-token` | | [`liff.getIDToken()`](https://developers.line.biz/ja/reference/liff/#get-id-token) | `@line/liff/get-id-token` | | [`liff.getDecodedIDToken()`](https://developers.line.biz/ja/reference/liff/#get-decoded-id-token) | `@line/liff/get-decoded-id-token` | | [`liff.permission.getGrantedAll()`](https://developers.line.biz/ja/reference/liff/#permission-get-granted-all)

[`liff.permission.query()`](https://developers.line.biz/ja/reference/liff/#permission-query)

[`liff.permission.requestAll()`](https://developers.line.biz/ja/reference/liff/#permission-request-all) | `@line/liff/permission` | | [`liff.getProfile()`](https://developers.line.biz/ja/reference/liff/#get-profile) | `@line/liff/get-profile` | | [`liff.getFriendship()`](https://developers.line.biz/ja/reference/liff/#get-friendship) | `@line/liff/get-friendship` | | [`liff.openWindow()`](https://developers.line.biz/ja/reference/liff/#open-window) | `@line/liff/open-window` | | [`liff.closeWindow()`](https://developers.line.biz/ja/reference/liff/#close-window) | `@line/liff/close-window` | | [`liff.sendMessages()`](https://developers.line.biz/ja/reference/liff/#send-messages) | `@line/liff/send-messages` | | [`liff.shareTargetPicker()`](https://developers.line.biz/ja/reference/liff/#share-target-picker) | `@line/liff/share-target-picker` | | [`liff.scanCodeV2()`](https://developers.line.biz/ja/reference/liff/#scan-code-v2) | `@line/liff/scan-code-v2` | | [`liff.scanCode()`](https://developers.line.biz/ja/reference/liff/#scan-code)(非推奨) | `@line/liff/scan-code` | | [`liff.permanentLink.createUrlBy()`](https://developers.line.biz/ja/reference/liff/#permanent-link-create-url-by)

[`liff.permanentLink.createUrl()`](https://developers.line.biz/ja/reference/liff/#permanent-link-create-url)

[`liff.permanentLink.setExtraQueryParam()`](https://developers.line.biz/ja/reference/liff/#permanent-linke-set-extra-query-param) | `@line/liff/permanent-link` | | [`liff.i18n.setLang()`](https://developers.line.biz/ja/reference/liff/#i18n-set-lang) | `@line/liff/i18n` | | [`liff.createShortcutOnHomeScreen()`](https://developers.line.biz/ja/reference/liff/#create-shortcut-on-home-screen) | `@line/liff/create-shortcut-on-home-screen` |