メニュー

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?

iOSおよびObjective-Cによる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 is the core product we'll be using to handle all the chat functionality.
  2. ユーザーアクセストークンを生成するためにサーバーサイドアプリを使用します。このトークンには、Twilio アカウント情報がすべて格納されています。 チャットクライアントはこのトークンをAPIとの接続に使用します。
  3. Twilio Access Manager is the part of the SDK than handles access tokens and even refreshes them upon token expiration.

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

はじめましょう!

Chatクライアントを初期化する

クライアントの作成に必要なのは、アクセス・トークンのみです。 このトークンは、TwilioアカウントおよびIP Messaging APIキーについての情報を保持しています。 Web版のTwilioチャットを各種言語で作成しました。 これらを使用してトークンを作成できます。

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

        
        
        
        
        twiliochat/MessagingManager.m

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

        twiliochat/MessagingManager.m

        Now it's time to synchronize your Twilio Client.

        What's this "synchronizing" about?

        Chatクライアントを同期します。

        直前の手順では、チャットクライアントアクセスマネージャーで初期化し、クライアントのデリゲートをMessagingManagerの共有インスタンスに設定しました。

        The synchronizationStatusUpdated delegate method will allow us to know when the client has loaded all the required information. You can change the default initialization values for the client using a TwilioChatClientProperties instance as the options parameter in the previews step.

        Channel一覧(次項で解説)の取得を試みる前に、クライアントが同期されている必要があります。 さもないと、client.channelsList()はnil返します

              
              
              
              
              twiliochat/MessagingManager.m

              Chatクライアントを同期します。

              twiliochat/MessagingManager.m

              Programmable Chatクライアントを初期化し他ので、チャンネルの一覧を取得しましょう。

              Channel一覧を取得する

              Channel一覧を取得する

              ChannelManager クラスはチャネルにに関するすべてについて取り扱います。 直前の手順では、クライアントがチャネル情報を同期するのを待機し、TCHChannelListインスタンスをChannelManagerを割り当てます。 ここでは、実際のチャネルの配列を、userChannelsWithCompletionおよびpublicChannelsWithCompletionメソッドを使用して取得することが必要です。

                    
                    
                    
                    
                    twiliochat/ChannelManager.m

                    Channel一覧を取得する

                    twiliochat/ChannelManager.m

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

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

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

                    IP Messagingクライアントはアプリケーション上で channelAddedchannelDeleted のようなイベントをトリガーします。 チャネルの作成や削除が発生すると、revealコントローラーのチャネルリストを更新します。チャネルが削除され、かつそのチャネルに参加していた場合、アプリケーションは自動的に general チャネルに参加します。

                    ChannelManager は、TwilioChatClientDelegateです。 このクラスではデリゲートメソッドを実装しますが、MenuViewControllerクラスをChannelManagerのデリゲートにすることもできます。 これにより、クライアントのイベントもリッスンできるようになります。

                          
                          
                          
                          
                          twiliochat/ChannelManager.m

                          Next, we need a default channel.

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

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

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

                          チャンネルに参加すると、 TCHChannelDelegate としてクラスを登録できるため、 messageAddedmemberJoined などのイベントのリスニングを開始できます。次のステップでは、その実行方法を示します。

                                
                                
                                
                                
                                twiliochat/ChannelManager.m

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

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

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

                                MainChatViewControllerTCHChannelDelegate として登録し、ここに、チャンネルイベントをリスニングする以下のメソッドを実装しました。

                                • channelDeleted:誰かがチャンネルを削除した場合。
                                • memberJoined:誰かがチャンネルに参加した場合。
                                • memberLeft:誰かがチャンネルから退出した場合。
                                • messageAdded:接続しているチャンネルに誰かがメッセージを送信した場合。
                                • synchronizationStatusChanged: チャネル同期ステータスの変更時

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

                                      
                                      
                                      
                                      
                                      twiliochat/MainChatViewController.m

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

                                      twiliochat/MainChatViewController.m

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

                                      他のChannelに参加する

                                      他のChannelに参加する

                                      アプリケーションはSWRevealViewControllerを使用して、そのTwilioアカウントに対して作成されたチャネルの一覧を含むサイドバーを表示します。

                                      サイドバーからチャネル名をタップすると、そのチャネルはMainChatViewControllerに設定されます。 setChannelメソッドは選択されたチャネルへの参加とメッセージの読み込みを担います。

                                            
                                            
                                            
                                            
                                            twiliochat/MainChatViewController.m

                                            他のChannelに参加する

                                            twiliochat/MainChatViewController.m

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

                                            チャンネルを作成する

                                            チャンネルを作成する

                                            ユーザーが新規チャネル名を入力できるように入力ダイアログを使用します。 ここでの唯一の制限は、ユーザーが"General Channel"という名前のチャネルを作成できないことのみです。 それ以外は、チャネルの作成は createChannelWithOptions を呼び出し、新規のチャネル情報の入ったディクショナリーを渡すだけで行えます。

                                                  
                                                  
                                                  
                                                  
                                                  twiliochat/ChannelManager.m

                                                  チャンネルを作成する

                                                  twiliochat/ChannelManager.m

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

                                                  チャンネルを削除する

                                                  チャンネルを削除する

                                                  チャネルの削除は、追加よりも簡単です。 UITableView の機能を使用してセルを削除します。 (選択されたセルのインデックス・パスから)どのチャネルを削除するのかが判明したら、チャネルのメソッド destroyWithCompletion を呼ぶだけで行えます。

                                                        
                                                        
                                                        
                                                        
                                                        twiliochat/MenuViewController.m

                                                        チャンネルを削除する

                                                        twiliochat/MenuViewController.m

                                                        That's it! We've built an iOS application with Objective-C. Now you are more than prepared to set up your own chat application.

                                                        関連トピック

                                                        次はどこでしょうか?

                                                        If you are an iOS developer working with Twilio, you might want to check out this other project:

                                                        通知クイックスタート

                                                        Swiftを使用したiOS用Twilio通知クイックスタート

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

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

                                                        Mario Celi Jose Oliveros Agustin Camino Kat King David Prothero Jeff Linwood Andrew Baker
                                                        Rate this page:

                                                        ヘルプが必要ですか?

                                                        We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.