Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20201017LIFF workshop at meichu
Search
LINE Developers Taiwan
PRO
October 17, 2020
Programming
39k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20201017LIFF workshop at meichu
20201017 梅竹黑客松賽前工作坊 with Coke
LINE Developers Taiwan
PRO
October 17, 2020
More Decks by LINE Developers Taiwan
See All by LINE Developers Taiwan
Building applications in the Gemini API family.
line_developers_tw
PRO
0
2.2k
20260514 - build with ai 2026 - build LINE Bot with Gemini CLI
line_developers_tw
PRO
0
500
2026.04.09_台灣客服協會_從資料重新理解客服_ Charlie Wang
line_developers_tw
PRO
0
54
Zona 台北大學 GDG 分享
line_developers_tw
PRO
0
81k
台大資料分析與決策社 機器學習的商業應用_Rei
line_developers_tw
PRO
0
38
政大數據分析社 機器學習的商業應用_Rei
line_developers_tw
PRO
0
67
Gemini 2025 新功能回顧 LINE Bot 完美結合
line_developers_tw
PRO
0
660
NTUAI企業參訪
line_developers_tw
PRO
0
26k
Data TECH FRESH企業參訪- Amber
line_developers_tw
PRO
0
57k
Other Decks in Programming
See All in Programming
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
250
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
110
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.6k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
今さら聞けないCancellationToken
htkym
0
220
Oxlintのカスタムルールの現況
syumai
6
1k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
1.8k
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
230
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
310
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
Modding RubyKaigi for Myself
yui_knk
0
900
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1k
Featured
See All Featured
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
380
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Un-Boring Meetings
codingconduct
0
310
How to Talk to Developers About Accessibility
jct
2
220
KATA
mclloyd
PRO
35
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Believing is Seeing
oripsolob
1
140
HDC tutorial
michielstock
2
690
Marketing to machines
jonoalderson
1
5.4k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Transcript
LIFF LINE Front-end Framework 1 LINE UIT Chien Cheng Yi
(Coke)
LINE UIT TEAM • User Interface Technology a.k.a Frontend •
Covert business idea to real idea • Work with Japan, Korea, Thailand, Vietnam and China teams 2 JAPAN TAIWAN THAILAND KOREA VIETNAM CHINA
LINE UIT TEAM Products 3
LIFF LINE Front-end Framework • Combine your app with LINE,
all together • LIFF is a platform make your web apps easily to be integrated into LINE app 4
Agenda • LIFF Introduction • Start first LIFF app •
LIFF Starter • Heroku • LINE Dev Console • LINE Flex message • Workshop • LIFF MEME • LIFF Campaign Invite 5
LIFF Intro • Web application • HTML, CSS and Javascript
• Integrate with LINE platform • LINE login • User Profile • Message API • JS SDK 6
Start first LIFF app 7
LINE LIFF Starter https://github.com/line/line-liff-v2-starter https://github.com/line/line-liff-v2-starter https://github.com/line/line-liff-v2-starter 8
LINE LIFF Starter Deploy 9
Heroku Create the 10
Heroku 11
Heroku Create New App 12
OOPS! 13
LINE Dev Console Create Channel, Create LIFF 14
LINE Dev Console Create Provider, Create Channel, Create LIFF •
https://developers.line.biz/console/ 15
LINE Dev Console Create Channel 16
LINE Dev Console Create Channel • Channel Type • LINE
Login • Provider • Channel Name • Channel Description 17
Channel Name Provider Channel Desc Chat Room Click 設定 ->
我的帳號 -> 連動中的應⽤程式 18
LINE Dev Console Create LIFF 19
Create LIFF Scope • profie (user profile) • openid (user
id) • chat_message.wrirte • liff could send a message 20
Create LIFF Size 21
Create LIFF 22
Create LIFF Bot Link Feature 23
Create LIFF Module mode (Only show when size is “Full”)
• Disable • Show the share button • Enable • Hide the share button 24
Create LIFF 25
26
27 https://engineering.linecorp.com/zh-hant/blog/new-liff-url-infomation/
Create LIFF Copy LIFF ID Copy LIFF ID 28
Back to Heroku 29
Heroku Set LIFF ID 30
Heroku Set LIFF ID 31
Yeah! 32
Heroku How to Deploy 33
Wait a moment 34
35
LIFF Starter 練習 • 在⼿機上開啟liff url (https://liff.line.me/…) 查看是否為liff web view
• 使⽤ 到聊天室 • 參考 https://developers.line.biz/en/reference/liff/#client-api • 使⽤ • Deploy到Heroku liff.permanentLink.createUrl() liff.sendMesssage() 36
LINE Flex Message 37
LINE Flex Message 38
LINE Flex Message • Messages with a customizable layout •
LIFF can send flex by using 39 liff.sendMesssage() liff.shareTargetPicker() •Target picker is supported on 10.3.0 or later for both LINE for iOS and LINE for Android.
LINE FLEX Message Simulator https://developers.line.biz/flex-simulator/ 40
LINE Workshop 41
Fork Repo https://github.com/cichien/liff-workshop-demo 42
43 Deploy new app in Heroku
44 Create new LIFF app
How to Develop • git clone https://github.com/xxxx/xxxx • npm install
• cp .env.example .env • set MY_LIFF_ID=${your liffId} • npm run dev • visit https://localhost:8000 45
How to Login LIFF in localhost • Run https in
localhost • ngrok • Self-signed certificate in localhost (Do not use it in production !!!) • Create the liff app for localhost 46
git checkout liff-meme 47
LIFF MEME 48
liff.isApiAvailable() 49 if (liff.isApiAvailable('shareTargetPicker')) { //.... } else { alert('你的
LINE App 暫時不⽀援 Share Target Picker ,將開始外部瀏覽器。'); liff.openWindow({ url: "{{.LIFFRedirectURL}}", external: true }); }
git checkout liff-campaign 50
LIFF Campaign Invite 51
Campaign API • https://reurl.cc/VXWxjZ • 建立活動 • 參加活動 • 取得活動參加結果
52
liff.state • https://liff-workshop-demo.herokuapp.com/? liff.state=%2Fresult.html%3FcampaignId%3D32 • https://liff-workshop-demo.herokuapp.com/result.html?campaignId=32 53
liff.state • Show Loading animation • Redirect by your server
54 if (new URL(location).searchParams.get('liff.state') !== null) { document.body.style.display = 'none' //... } •
Q & A 55