# ニュース: liff.shareTargetPicker()の戻り値に関するお知らせ

liff.shareTargetPicker()の戻り値に関するお知らせ

今後、LIFF v2のliff.shareTargetPicker()の戻り値を変更する予定があります。 現在の仕様のみを想定しているアプリの開発者の方は、実装の変更をお願いします。

注意

現時点では、変更後のliff.shareTargetPicker()の戻り値の仕様は確定していません。

# 概要

仕様変更前は、ターゲットピッカーを表示できたかどうかをLIFFアプリが確認できましたが、その後、メッセージを送信できたかどうかは確認できませんでした。

仕様変更後は、メッセージを送信できたかどうかを確認できるため、ユーザーの状況に合わせて、LIFFアプリの挙動を変更するように実装できます。

# 仕様変更前

# サンプル

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オブジェクトが返されます。

ターゲットピッカーが表示されると、Promiseがresolveされます。

ターゲットピッカーが表示される前に問題が発生した場合は、Promiseがrejectされ、LiffErrorが渡されます。LiffErrorオブジェクトについては、「LIFF SDKのエラー」を参照してください。

注意
  • 表示されたターゲットピッカーでユーザーが送信先を選択しなかった場合など、ターゲットピッカーが表示されたあとの状況は検知できません。
  • Promiseがresolveした場合とrejectした場合のコールバック関数内で、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され、成功が渡されます。

メッセージを送信する前に、ユーザーがキャンセルしてターゲットピッカーを閉じると、Promiseがresolveされますが、成功は渡されません。

ターゲットピッカーが表示される前に問題が発生した場合は、Promiseがrejectされ、LiffErrorが渡されます。LiffErrorオブジェクトについては、「LIFF SDKのエラー」を参照してください。

なお、今後の仕様変更に合わせてエラー定義も変更する予定です。

注意

Promiseがresolveした場合とrejectした場合のコールバック関数内で、alert()を実行すると一部端末で正しく動作しません。

# 仕様変更予定日時

未定