# News: 提醒:關於 liff.shareTargetPicker() 回傳值的修改通知

提醒:關於 liff.shareTargetPicker() 回傳值的修改通知

由於我們將會更改 LIFF v2 的 liff.shareTargetPicker() 回傳值。 若您目前的實作正使用到此功能,請參考相關規格並修改。

注意

目前尚未確定關於變更後的 liff.shareTargetPicker() 回傳值規格。

# 概要

在規格改變前,LIFF app 僅可確認 target picker 是否已顯示,但無法確認訊息是否已被傳送。

在規格改變後,LIFF app 不僅可以確認訊息是否已被傳送,並且能配合使用情境,進行相關功能的實作。

# 尚未變更規格之前

# 範例

if (liff.isApiAvailable('shareTargetPicker')) {
  liff.shareTargetPicker([
    {
      type: "text",
      text: "Hello, World!"
    }
  ])
    .then(
      console.log("ShareTargetPicker was launched")
    ).catch(function(res) {
      console.log("Failed to launch ShareTargetPicker")
    })
}

# 語法

liff.shareTargetPicker(messages)

# 回傳值

回傳Promise物件。

當 target picker 顯示後,Promise 會被 resolve。

如果 target picker 在顯示前發生錯誤,除了 Promise 會被 reject 外,並且會發送 LiffError。更多關於 LiffError 物件的資訊,請參考 LIFF SDK errors 文件

注意
  • 若使用者在顯示 target picker 時未選擇傳送目的地,將無法確認 target picker 顯示後的情況。
  • Promise 被 resolve 與 reject 的 callback 函數中,LIFF app 在某些裝置中無法使用 alert()

# 規格變更之後

# 範例

if (liff.isApiAvailable('shareTargetPicker')) {
  liff.shareTargetPicker([
    {
      type: "text",
      text: "Hello, World!"
    }
  ])
  .then(function(res) {
    if (res) {
      // succeeded to send message in TargetPicker
      console.log(`[${res.status}] Message [${this.msgType}] is sent!`)
    } else {
      // canceled to send message
      console.log('TargetPicker was closed!')
    }
  }).catch(function(error) {
    // something wrong happened before sending message properly
    console.log('something wrong happen')
  })
}

# 語法

liff.shareTargetPicker(messages)

# 回傳值

回傳Promise物件。

如果訊息被正確傳送,Promise 會被 resolve 並發送含有成功狀態的訊息。

如果使用者在訊息被傳送前取消或關閉 target picker,Promise 會被 resolve,但不會發送含有成功狀態的訊息。

如果 target picker 在顯示前發生錯誤,除了 Promise 會被 reject 外,並且會發送 LiffError。更多關於 LiffError 物件的資訊,請參考 LIFF SDK errors 文件

之後我們預計會隨著規格的變更,並修改 Error 的定義。

注意

Promise 被 resolve 與 reject 的 callback 函數中,LIFF app 在某些裝置中無法使用 alert()

# 預計規格變更的時間

未定。