【LINE】 LIFF 앱을 사용해보세요 ~ 웹에서 토크로 메시지 보내기 ~

9034 단어 LIFFLine

개요



  • 마지막까지 기사에서 LIFF 앱을 만들어 LINE 토크에서 실행하여 사용자 정보를 얻고 토크에 메시지를 보내려고했습니다
  • 그냥 이번 달 (2020 년 3 월) Share Target Picker라는 기능이 출시되었습니다. 그래서 시도
  • Share Target Picker를 사용하면 대상 토크를 선택할 수 있으므로 브라우저에서 LIFF 앱을 열 때도 토크에 메시지를 보낼 수 있습니다

  • 설정


  • Share Target Picker를 사용하려면 LINE Developer 웹 콘솔에서 설정이 필요합니다
  • LIFF 탭에서 활성화



  • 구현


  • 이전 기사에서 메시지를 보내는 부분에서 LIFF API sendMessages()를 사용했습니다.
  • 이 상태에서 브라우저에서 LIFF 앱을 열고 메시지를 보내려고하면 오류가 발생하여 보낼 수 없습니다


  • src/hooks/useLiff.js
    // 抜粋
      const sendMessage = async ({ text }) => {
        setLoading(true);
        try {
          // メッセージを送信
          liff.sendMessages([{ type: 'text', text }]);
          console.log(`success send message: ${text}`);
        } catch (error) {
          console.log({ error });
          setError(error);
        } finally {
          setLoading(false);
        }
      };
    
  • 브라우저에서 열려있는 경우 Share Target Picker를 표시하여 대상을 선택할 수 있습니다.
  • isInClient()에서 LINE에서 열려 있는지 여부를 결정할 수 있습니다
  • shareTargetPicker()에서 Share Target Picker를 볼 수 있습니다


  • src/hooks/useLiff.js
    // 抜粋
      const sendMessage = async ({ text }) => {
        setLoading(true);
        try {
          // LINEアプリ上で開かれているかを判定
          liff.isInClient()
            // LINEアプリ上なら今まで通り開いているトークに送信
            ? liff.sendMessages([{ type: 'text', text }])
            // ブラウザなら送信先選択画面を表示
            : liff.shareTargetPicker([{ type: 'text', text }]);
          console.log(`success send message: ${text}`);
        } catch (error) {
          console.log({ error });
          setError(error);
        } finally {
          setLoading(false);
        }
      };
    
  • 브라우저에서 이용하는 경우는 LINE에 로그인시켜 둘 필요가 있으므로 그 구현도 추가해 둡니다
  • LIFF의 init 처리를 하는 메소드를 수정합니다

  • src/hooks/useLiff.js
      const initLiff = async ({ liffId }) => {
        setLoading(true);
        try {
          await liff.init({ liffId });
          console.log('success liff init');
          // ログインチェック処理を追加
          if (liff.isLoggedIn()) {
            console.log('logged in!');
          } else {
            console.log('not logged in');
            // LINEの提供するログイン画面へリダイレクトさせる(完了するともとのページにリダイレクトされる)
            liff.login();
          }
        } catch (error) {
          console.log({ error });
          setError(error);
        } finally {
          setLoading(false);
        }
      };
    
  • 이제 브라우저에서 액세스하는 경우 로그인 처리에도 대응할 수 있습니다

  • 동작 확인


  • 브라우저에서 액세스하여 동작을 확인합니다
  • 메시지 보내기 버튼을 누르면 어떤 대화로 보낼지 선택할 수있는 화면이 나타납니다
  • LINE에 액세스하여 확인하면 제대로 보낼 수 있습니다



  • 요약


  • Share Target Picker를 사용하면 브라우저에서 LIFF 앱에 액세스한 경우에도 메시지 전송 등 LINE과의 연계를 할 수 있게 되었습니다
  • 이 기능을 사용하면 LIFF 앱의 활용 장면이 넓어질 것 같네요
  • 좋은 웹페이지 즐겨찾기