4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2023

Day 7

LINE リッチメニューで、デフォルトのリッチメニューとタブ切り替えを組み合わせる

Last updated at Posted at 2023-12-06

はじめに

LINE公式アカウントには、リッチメニューという機能があります

LINE公式アカウントと友だちになったユーザーに、フッター固定のメニューを表示できるとても面白い機能です
LINE Official Account Managerを使ったGUIでの設定、Messaging APIを利用したAPIでの設定ができます
今回はMessaging APIを利用し、デフォルトのリッチメニューとタブ切り替えを組み合わせたリッチメニューの動きを紹介したいと思います

リッチメニューをユーザーに表示する方法ついて

リッチメニューをユーザーに表示する方法は2つあります

  • 特定のユーザーに特定のリッチメニューをリンクする
  • デフォルトのリッチメニューを登録する

特定のユーザーに特定のリッチメニューをリンクする方法は、「男性には男性向け、女性には女性向けのメニューを出したい」など、ターゲットを決めてリッチメニューを出したい時にとても便利です

対して、デフォルトのリッチメニューを登録する方法では、上記のターゲットを除くすべてのユーザーに見せたいリッチメニューを設定することができます

2つを組み合わせることで、漏れなくすべてのユーザーに何かしらのリッチメニューを表示することができます

デフォルトのリッチメニューについて

デフォルトのリッチメニューには、下記のような仕様があります

デフォルトのリッチメニューは、LINE公式アカウントと友だちになっているユーザーのうち、個別にリッチメニューをリンクされていないすべてのユーザーに表示されます。
すでにデフォルトのリッチメニューが設定されていた場合は、新しく指定したリッチメニューに置き換えられます。

つまり、特定のユーザーに特定のリッチメニューを表示したいわけではないのなら、デフォルトのリッチメニューを再登録しなおすだけで、こまめにリッチメニューを出し分けることができます
「特にターゲットは絞らず、日替わりの特集のタイトルを表示したリッチメニューを出したい」など、いろんなユースケースで使えそうです

タブ切り替えについて

リッチメニュー内に別のリッチメニューへの切替アクションを設定することで、タブ切り替えを実装することもできます

APIとしては、切り替え先のリッチメニューのエイリアスを指定するだけのシンプルな機能ですが、
内部的には特定のユーザーに特定のリッチメニューをリンクする実装となっているようです

  1. [運用側] リッチメニューB への切り替えが設定された リッチメニューA を、デフォルトのリッチメニューとして登録する
  2. ユーザーにデフォルトのリッチメニュー(リッチメニューA)が表示される
  3. ユーザーがタブを押してリッチメニューBに切り替える
  4. ユーザーとリッチメニューBがリンクされる
  5. ユーザーが元のメニューに戻るタブを押し、リッチメニューA に切り替える
  6. ユーザーとリッチメニューAがリンクされる

この実装であることで、ユーザーが最後に表示したリッチメニューが保持されるので、
一度トーク画面から離れても、また同じリッチメニューを見ることができます!

デフォルトのリッチメニューとタブ切り替えを組み合わせるとどうなるか

では、この後 リッチメニューC をデフォルトのリッチメニューとして登録したらどうなるでしょうか?

先に紹介しましたデフォルトのリッチメニューの仕様↓を知っていると、ユーザーにはリッチメニューCが表示されることを期待してしまいます

すでにデフォルトのリッチメニューが設定されていた場合は、新しく指定したリッチメニューに置き換えられます。

しかし、ユーザーはタブ切り替え機能により特定のリッチメニューとリンクされています
そのため、デフォルトリッチメニューの表示対象から外れ、ユーザーにはリッチメニューAが表示され続けてしまいます

  1. [運用側] リッチメニューB への切り替えが設定された リッチメニューA を、デフォルトリッチメニューとして登録する
  2. ユーザーにデフォルトのリッチメニュー(リッチメニューA)が表示される
  3. ユーザーがタブを押してリッチメニューBに切り替える
  4. ユーザーとリッチメニューBがリンクされる
  5. ユーザーが元のメニューに戻るタブを押し、リッチメニューA に切り替える
  6. ユーザーとリッチメニューAがリンクされる

 7. [運用側] リッチメニューC を、デフォルトリッチメニューとして登録する
 8. ユーザーはリッチメニューAとリンクされているので、リッチメニューAが表示される

ユーザーに再びデフォルトリッチメニューを見せるには

もし、新しくデフォルトのリッチメニューを設定することになった場合は、ユーザーとリッチメニューのリンクを解除してあげる必要があります

今回の例の場合は、タブ切り替えを実装しているので、リッチメニューA・Bどちらに紐づいているのかはユーザーによってまちまちです
そのため、リッチメニューA・Bの両方のリンクを解除してあげる必要があります

ちなみに

  1. [運用側] リッチメニューB への切り替えが設定された リッチメニューA を、デフォルトのリッチメニューとして登録する
  2. ユーザーにデフォルトのリッチメニュー(リッチメニューA)が表示される

このタイミング、つまりユーザーがタブ移動をしていないタイミングであれば、ユーザーにはリッチメニューが紐づいていません
この後 リッチメニューC をデフォルトのリッチメニューとして登録したら…

 3. ユーザーにデフォルトのリッチメニュー(リッチメニューC)が表示される

という動きをします

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?