メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

AndroidとJavaを使用したChat

Ready to implement a chat application using Twilio Programmable Chat Client? Here is how it works at a high level:

  1. Twilio Programmable Chatはチャット機能の処理に使用される、核となる製品です。
  2. サーバー側のアプリケーションを使用して、皆さんの全Twilioアカウント情報を含むユーザーのアクセストークンを生成します。Programmable ChatクライアントはこのトークンをAPIとの接続に使用します。
  3. Twilio Access Managerはアクセストークンを処理し、トークンの期限切れに先立ってリフレッシュを行うSDKの一部です。

Properatiは不動産の買い手と売り手をリアルタイムにつなぐ手助けをするモバイルメッセージングAppを構築しました。 さらに詳しく。

For your convenience, we consolidated the source code for this tutorial in a single GitHub repository. Feel free to clone it and tweak as required.

はじめましょう!

クライアントを初期化する - Part 1: アクセストークンを取得する

The first thing you need to create a client is an access token. This token holds information about your Twilio account and Programmable Chat API keys. We have created a web version of Twilio chat in different languages. You can use any of these to generate the token:

Volley を使用して、サーバーに対するリクエストを作成し、アクセストークンを取得します。

        
        
        
        
        app/src/main/java/com/twilio/twiliochat/chat/accesstoken/AccessTokenFetcher.java

        アクセストークンを取得する

        app/src/main/java/com/twilio/twiliochat/chat/accesstoken/AccessTokenFetcher.java

        さて、いよいよトークンを使用してTwilioクライアントを初期化しましょう。

        Initializing the Client - Part 2: Build the client

        クライアントを初期化する - Part 2: クライアントの構築

        Before creating a Programmable Chat Client instance we need to decide the region it will connect to and the synchronization strategy used to initialize it.

        We can then pass this information along with the access token generated in the previous step and wait for the client to be ready.

              
              
              
              
              app/src/main/java/com/twilio/twiliochat/chat/ChatClientBuilder.java

              Chatクライアントを開発する

              app/src/main/java/com/twilio/twiliochat/chat/ChatClientBuilder.java

              次のステップはChannel一覧の取得です。

              Channel一覧を取得する

              Channel一覧を取得する

              Our ChannelManager class takes care of everything related to channels. The first thing we need to do when the class is initialized, is to store a list of channels of type Channel. To do this we call the method getChannels from the Programmable Chat Client and extract a Channel object from each ChannelDescriptor returned.

                    
                    
                    
                    
                    app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                    Channel一覧を取得する

                    app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                    Let's see how we can listen to events from the chat client so we can update our app's state.

                    クライアントイベントをリスニングする

                    クライアントイベントをリスニングする

                    Programmable Chatクライアントはアプリケーション上でonChannelAddedonChannelDeletedといったイベントをトリガーします。 Channelの作成時や削除時には、スライディングパネルのChannelの一覧を再読み込みします。 Channelが削除されたものの、そのチャネル上に現在いる場合は、アプリケーションは自動的にgeneral Channelに参加します。

                    ChatClientListenerを使用して、イベントをリッスンするためにChatClientを設定することが必要です。 この特定のケースでは、MainChatActivityはChatClientListenerを実装しますが、そのメソッドはChatClientListener(クライアントのリスナー)も実装するChannelManagerクラスから呼ばれます。 ChannelManagerはイベントハンドラープロクシーとして使用されます。 Channelの読み込み時にTwilio Chatはリスナーを設定します。

                          
                          
                          
                          
                          app/src/main/java/com/twilio/twiliochat/chat/MainChatActivity.java

                          クライアントイベントをリッスンする

                          app/src/main/java/com/twilio/twiliochat/chat/MainChatActivity.java

                          Next, we need a default channel.

                          一般チャンネルに参加する

                          一般チャンネルに参加する

                          このアプリケーションは、起動時に"General Channel"という名前のChannelに参加しようとします。 このChannelが存在しない場合、その名前でChannelを作成します。 このサンプルアプリケーションでは、公開チャネルの挙動を紹介していますが、ChannelクライアントではプライベートChannelを作成して招待の処理を行ったりといったことも可能です。

                          アプリケーションを起動するたびに一般チャンネルを新たに作成したいわけではないので、一般チャンネルに一意の名前を設定します。

                                
                                
                                
                                
                                app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                                General Channelに参加するか、作成する

                                app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                                ここで、Channelイベントをいくつかリッスンしてみましょう。

                                チャンネルイベントをリスニングする

                                チャンネルイベントをリスニングする

                                チャンネルのリスナーを ChannelListener を実装する MainChatFragment に設定しました。ここに、チャンネルイベントをリスニングする以下のメソッドを実装しました。

                                • onMessageAdded:接続しているチャンネルに誰かがメッセージを送信した場合。
                                • onMemberAdded:誰かがチャンネルに参加した場合。
                                • onMemberDeleted:誰かがチャンネルから退出した場合。

                                お気づきかもしれませんが、これらの各メソッドにはパラメーターとして便利なオブジェクトが含まれています。 チャネルに追加された実際のメッセージがそのひとつです。

                                      
                                      
                                      
                                      
                                      app/src/main/java/com/twilio/twiliochat/chat/MainChatFragment.java

                                      チャンネルイベントをリスニングする

                                      app/src/main/java/com/twilio/twiliochat/chat/MainChatFragment.java

                                      ここで実際のチャットアプリケーションが用意できましたが、複数Channelを使用してもっと面白いものを作ってみましょう。

                                      他のChannelに参加する

                                      他のChannelに参加する

                                      アプリケーションでは、Drawer Layout を使用して、該当の Twilio アカウントに作成されたチャンネルのリストを示します。

                                      When you tap on the name of a channel, from the sidebar, that channel is set on the MainChatFragment. The setCurrentChannel method takes care of joining to the selected channel and loading the messages.

                                            
                                            
                                            
                                            
                                            app/src/main/java/com/twilio/twiliochat/chat/MainChatFragment.java

                                            他のChannelに参加する

                                            app/src/main/java/com/twilio/twiliochat/chat/MainChatFragment.java

                                            他のChannelに参加可能な場合、管理者向けに新規Channelを作成する(そして古いChannelを削除する)何らかの方法が必要です。

                                            チャンネルを作成する

                                            チャンネルを作成する

                                            We use an input dialog so the user can type the name of the new channel. The only restriction here is that the user can't create a channel called "General Channel". Other than that, creating a channel is as simple as using the channelBuilder as shown and providing at the very least a channel type.

                                            You can provide additional parameters to the builder as we did with general channel to set a unique name. There's a list of methods you can use in the client library API docs.

                                                  
                                                  
                                                  
                                                  
                                                  app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                                                  チャンネルを作成する

                                                  app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                                                  良いですね、これでChannelの作成方法が分かったので、例えば誤って多くのChannelを作成するとしましょう。 この場合はこれら不要なChannelを削除できると便利です。 次はこれをやってみましょう!

                                                  チャンネルを削除する

                                                  チャンネルを削除する

                                                  Deleting a channel is easier than creating one. The application lets the user delete the channel they are currently joined to through a menu option. In order to delete the channel from Twilio you have to call the destroy method on the channel you are trying to delete. But you still need to provide a StatusListener to handle the success or failure of the operation.

                                                        
                                                        
                                                        
                                                        
                                                        app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                                                        チャンネルを削除する

                                                        app/src/main/java/com/twilio/twiliochat/chat/channels/ChannelManager.java

                                                        That's it! We've built an Android application with the Twilio Chat SDK. Now you are more than prepared to set up your own chat application.

                                                        関連トピック

                                                        次はどこでしょうか?

                                                        Twilio を使う Java 開発者であれば、他のチュートリアルも調べてみてください。

                                                        Authy を使った 二要素認証

                                                        Authyを使ってウェブアプリに二要素認証(2FA)を実装する方法を学びます。二要素認証はパスワードだけで守るよりも強力にユーザーのデータを守ります。

                                                        SMS・MMS 通知

                                                        サーバー停止状態が発生した場合に SMS 経由ですべての管理者に警告するサーバー通知システムを構築する方法を学びます。

                                                        これは役に立ちましたか?

                                                        このチュートリアルをお読みいただき、ありがとうございます。ご意見やご感想などございましたら、ぜひお聞かせください。@twilio へツイートいただき、ご意見をお知らせください。

                                                        Mario Celi Jose Oliveros Agustin Camino David Prothero Andrei Birjukov Andrew Baker Jeff Linwood Andres Jaan Tack
                                                        Rate this page:

                                                        ヘルプが必要ですか?

                                                        誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。