Section 1: Introducing LIFF and LINE MINI App
What LIFF is, and how running inside LINE differs from an external browser
Typical use cases: bookings, member cards, loyalty points and forms
The overall architecture: LIFF app, backend, Messaging API and LINE Official Account
The planned merger of LIFF into LINE MINI App and what it means for new projects
Section 2: Lab: Creating a Provider, Channel and LIFF App
Providers and channels in the LINE Developers Console
Choosing between a LINE Login channel and a LINE MINI App channel
LIFF app settings: Full, Tall and Compact sizes, an HTTPS endpoint URL and scopes
Lab: create a first LIFF app and open it through its LIFF URL on a phone
Section 3: Lab: Setting Up a React or Next.js Project
Install @line/liff and call liff.init() once per page load
Start from Create LIFF App and manage the LIFF ID through environment variables
Test on a phone through an HTTPS tunnel and debug with LIFF Inspector
Lab: a React app skeleton that shows its LIFF connection status
Section 4: Login and User Information
isInClient(), isLoggedIn(), login() and logout() in each environment
getProfile(), getContext() and getOS() for adapting app behaviour
How access tokens differ from ID tokens, and why the openid scope is needed
Lab: a profile page that works both inside LINE and in a browser
Section 5: Lab: Sending Messages, Sharing and Opening Windows
sendMessages(), its usage conditions and the chat_message.write scope
shareTargetPicker() for letting users share with friends or groups
Send custom Flex Messages and use openWindow() and closeWindow()
Lab: a button that shares a coupon as a Flex Message with friends
Section 6: Lab: Scanning QR Codes and Designing UX for LINE
scanCodeV2() for scanning QR codes, and its limits in each environment
Design screens that suit LIFF sizes and mobile use
Reduce SDK size with the pluggable SDK and test with LIFF Mock
Lab: an in-store check-in page that scans a QR code