# liff.shareTargetPicker() 新增 isMultiple 參數

liff.shareTargetPicker() 是 LINE 的 Front-end Framework 中一個很強大的 API,它可以讓開發者在網頁上產生 LINE 中專屬的 Message Object,然後請使用者分享給他的好友或者群組。

LINE 官方部落格在 2021/10/12 發佈了 LIFF v2.16.0 (opens new window),幫這個 API 新增了一個 isMultiple 參數,讓我們能夠限制使用者一次只能傳給一個對象。讓我們一起來看文件 (opens new window),然後用筆者寫的測試程式來測試看看吧!

# isMultiple 參數說明文件 (opens new window)

這個 isMultiple 參數的功能,是用來控制訊息能不能被使用者一次分享給多個目標,當 isMultiple: true 時,選擇好友的畫面會跟之前的版本相同;當 isMultiple: false 時,使用者就沒辦法一次選擇多個對象,同時也不允許使用者把訊息傳送到「群組」跟「聊天」。

在文件中有特別提醒,雖然指定 isMultiple: false 時一次只能選擇一個對象,但是使用者還是可以嘗試多分享幾次,所以如果真的想要嚴格限制可以分享的人數,你會需要在 LIFF 中寫對應的程式碼進行限制。

文件中提供的建議作法是,產生一個一次性連結,放在訊息中讓使用者分享出去,如果這個連結被開啟過一次就會失效,這樣才是真的限制使用者只能把訊息分享給一個對象。

# 測試程式

請點選上方筆者開發的測試網頁,為了方便截圖紀錄,筆者特地把裝置的一些資料也顯示在網頁上:

Android iOS

接下來,讓我們先點選 isMultiple: true 的按鈕,你可以在選擇好友的視窗看到有「群組」、「好友」和「聊天」三大分類:

Android iOS

然後目前一次最多可以選擇 10 個對象:

如果使用者選擇至少一個對象分享後,就會回傳分享成功:

Android iOS

如果使用者沒有分享,又或者是使用者的 LINE 版本太舊(介於 LINE 10.3.0 ~ 10.10.0 之間),這個 API 就不會有回傳值:

Android iOS

接下來,讓我們先點選 isMultiple: false 的按鈕,你可以在選擇好友的視窗看到只剩下「好友」分類:

Android iOS

而且使用者最多只能選擇一個對象,如果選了其他的,之前選取的對象就會被取消:

Android iOS

# 原始碼與相關連結

TIP

本文範例程式的原始碼授權為 MIT License,若您有任何疑惑,你可以透過 Facebook (opens new window) 與我聯繫。