メニュー

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?

SDK移行ガイド - iOS 1.0

概要

Twilio Programmable Chat 1.0はデータの同期に追加のコントロールを提供し、パフォーマンスの向上やその他多くの機能強化が含まれています。 このガイドは既存のChatアプリケーションから新しい1.0リリースでサポートされる戦略への移行のお手伝いをします。

ClientおよびChannelのデリゲートが、オブジェクトのどの部分が更新されたかを示すよう拡張され、変更された情報に対してUIの変更を最適化できるようになりました。

Users are no longer implicitly subscribed to to improve performance on large instances. You can subscribe up to a maximum number of users at once after which your least recently used User will be unsubscribed. Using either subscribed Users or User Descriptors appropriately is key to the performance of your application:

  • 購読済みのユーザーは、ただちに他のクライアントで行われた変更(分かりやすい名前および属性など)が反映され、最新の情報に更新済みの在席確認情報とオンラインステータス情報が得られます。 購読済みのユーザーはメッセージのライブ表示、またはクライアントによって最近連絡のあったメッセージに最適です。
  • User Descriptorはシステム内のユーザーステータスのスナップショットです。 これらのスナップショットオブジェクトは、ユーザーインターフェイスの中でユーザーの一時的な一覧や、継続的なデータの同期が重要出ないチャネルにおける多くのユーザーの視覚化に最適です。

通知の登録プロセスが単純明快になり、以前に公開していた個別のデリゲートメソッドではなく、コールバックでプッシュ通知への購読の成功を反映させます。

クライアントの初期化が単純化され、ほとんどのユーザーの一般的なシステムの使用方法を反映するようになりました。 全User Channels(現在のUserが参加しているか所有しているChannel)はクライアントの開始じから購読されますが、最初はMembersの一覧のみが同期されます。 これにより、クライアントの開始スピードを保ちながら、クライアントにただちに最新のアクティビティーを反映されます。 これにより、Channelオブジェクトを使い始めるためにそれらに手動でsynchronizeWithCompletion:を呼び出す必要がなくなりました。

TwilioChatClientの変更点

Initialization Changes

Chatクライアントの作成が非同期で行われるようになり、クライアントオブジェクトは、新規コンプリーションブロックの一部として返されます。 この変更は与えられたアクセストークンの問題に起因してクライアントの作成が失敗する可能性を反映してのものです。 chatClientWithToken:properties:delegate:でのクライアントの作成はchatClientWithToken:properties:delegate:completion:を使用したものに置き換えられ、クライアントオブジェクトの代わりにnilを返します。 コンプリーションが呼び出されたら、クライアントオブジェクトの使用準備は完了です。

The TwilioChatClientProperties object provided during client creation has two fewer properties:

synchronizationStrategy has been deprecated. All user channels are implicitly synchronized in Chat 1.0 so that events for Channels the user is joined to will be delivered from client initialization.

この変更に対するクライアントでの影響を手に負えるものになるようにするため、Chatはメッセージの決定済みの一覧を暗黙的に読み込まないようになり(このオブジェクトのinitialMessageCountプロパティーもまた非推奨となりました)、またChannelのメンバーに対してUserInfoオブジェクトを同期しなくなりました。 これらのオブジェクトは頻繁な更新を誘発し、クライアントに不必要な追加の負担をかけることがあります。 お使いの実装がinitialMessageCountに依存している場合、ユーザーがChannelに対するUIを表示させる際にオンデマンドでメッセージを取得するよう検討することを推奨します。 最初にメッセージをいくつか取得しておくことがお使いのユースケースで重要な場合は、クライアントがメッセージの履歴でのローカルキャッシュで完全に同期された時点で、subscribedChannels:を使用しループを回してください。

updateToken: は、トークンの更新処理の成功の示すものを提供するupdateToken:completion:に移行されました。

プッシュ通知の変更

(de)registerWithToken:(de)registerWithNotificationToken:completion:に名前変更され、通知トークンをアクセストークンと区別できるようになり、またコンプリーションブロックはリクエストの成功の初期状態の反映を示します。 chatClientToastSubscribed:およびchatClient:toastRegistrationFailedWithError:は引退しました。 handleNotification:handleNotification:completion:に拡張され、通知がChatクライアントによって処理できたかどうかを示すようになりました。

chatClient:toastReceivedOnChannel:message:デリゲートメソッドはchatClient:notificationNewMessageReceivedForChannelSid:messageIndex: に変更され、通知の性質や、デリゲートが呼び出された時点で該当のChannelまたはMessageがクライアントに同期されていない可能性をよりよく反映するようになりました。

全般的なデリゲートの変更

クライアントとChannelデリゲート(Channel、Message、MemberおよびUser)両方における変更された各デリゲートコールバックには、オブジェクトの変更に関する情報を提供するupdatedパラメーターが含まれ、また名前からChanged部分が取り除かれました。

chatClient:connectionStateChanged:メソッドはchatClient:connectionStateUpdated:に名前変更されました。

chatClient:synchronizationStatusChanged:メソッドはchatClient:synchronizationStatusUpdated:に名前変更されました。

chatClient:channel:synchronizationStatusChanged:デリゲートメソッドは非推奨となりました。 TCHChannelUpdateSynchronizationStatusTCHChannelUpdate値を確認する、拡張されたchatClient:channel:updated:デリゲートコールバックを通じて、Channelに大して同期状態が変更されたかどうか判断することができるようになっています。

その他の変更

userInfoプロパティーはuserに名前が変更され、TCHUserInfoからTCHUserおよびTCHUserDescriptorオブジェクトへの分割を反映するようになりました。 Membersに関連づけられたUserオブジェクトとは異なり、そのクライアントのユーザーに対しては常にsubscribed状態となります(詳細についてはドキュメントを参照してください)。TwilioChatClientオブジェクトのusersアクセサーを使用して、クライアントのTCHUsersにアクセスできます。

TCHUserInfoの変更

TCHUserInfo は非推奨となり、2つの個別のオブジェクト、TCHUserおよびTCHUserDescriptorに置き換わりました。 TCHChannelDescriptorオブジェクトと同様、TCHUserDescriptorは取得後に直接活用すべきデータのスナップショットを表しますが、時間の経過とともに新しいデータで更新されないため保持はされません。

TCHUser オブジェクトにProgrammable Chat購読に新しい概念が追加されました。 Programmable Chatプリミティブは、サーバーから更新を受け取ると更新されます。 現行のTCHChannelオブジェクトは常に購読され、TCHChannelDescriptorオブジェクトはされません。 同様に、TCHUserDescriptorオブジェクトは購読されませんが、TCHUserオブジェクトについては定かではありません。TCHUserが当初クライアントで購読されている場合、chatClient:userSubscribed:デリゲートコールバックを受信します。

When you first obtain a TCHUser object, it will be subscribed but there is a maximum number of TCHUser objects which may be subscribed at a time in the Programmable Chat client. Once this limit is exceeded, the least recently subscribed TCHUser object in memory will be unsubscribed. Several things happen when this occurs:

  • 新規chatClient:userUnsubscribed:メソッドは、オブジェクトが今後更新を受信しないことを知らせるために呼び出されます。
  • ChatクライアントはTCHUserオブジェクトへの強参照を維持しないため、これをstrongで保持していない限り解放されます。
  • isSubscribedアクセサーは、TCHUserオブジェクトへの参照を保持し続けた場合、falseを返すようになりました。
  • 購読解除されたTCHUserオブジェクトからのデータ読み込みの施行は、その値としてnilを返します。
  • 購読解除されたTCHUser上のonlineおよびnotifiableブール値はNOを返します。 これは、他のパラメーターにおけるnil値の返却と同様、ユーザーの現在のステータスの情報の欠如を反映しています。
  • 下記で記されているメソッドを使用して再度TCHUserを購読すると、新規TCHUserオブジェクトが生成されます。

指定されたChatクライアントのインスタンスで同時に購読できるユーザー数は、Userオブジェクトが購読解除されることで影響を受けない程度に十分大きいものです。 これは開発者がコード内で提供すべき類のものですが、常にユーザーを表すオブジェクトを更新される際にTCHUserオブジェクトを、メンバー一覧などの一時的なUIを表示する際にはTCHUserDescriptorを使用していることを確認することは重要です。

新規TCHUserDescriptorオブジェクトには、非推奨となったTCHUserInfoオブジェクトのすべてのアクセサーが含まれますが、セッターはありません。 購読ずみのTCHUserオブジェクトを返す同期メソッドであるsubscribeWithCompletion:もあります。

新規TCHUserオブジェクトは旧TCHUserInfoオブジェクトの全機能と、TCHUserオブジェクトがまだ購読中の場合に設定されていることを確認すべきisSubscribedプロパティーを持っています。また、クライアント上のアクセサーはTCHUserオブジェクトが購読解除されるとnilを返すことがあります。 このオブジェクトには、現時点で更新が必要ない場合に購読プールから明示的にTCHUserオブジェクトを削除するunsubscribeメソッドがあります。

A new TCHUsers class exists, accessible from the client instance with the users method. This class is one way to access TCHUser and TCHUserDescriptor objects. Methods this class provides include:

  • userDescriptorsForChannel:completion: is a convenience method to retrieve TCHUserDescriptor objects for an entire Channel's membership with a single asynchronous call. You always have the option to obtain TCHUserDescriptor objects individually for a channel's Member but for a large number of Members this method is faster. The return will be a list of ephemeral UserDescriptor objects
  • userDescriptorWithIdentity:completion: は指定されたアイデンティティーに対するTCHUserDescriptorを提供します。
  • subscribedUserWithIdentity:completion: 指定されたアイデンティティーに対してTCHUserを取得および購読します。 Userオブジェクトがすでに購読済みである場合、そのオブジェクトへのインスタンスになるか、あるいは新規購読が作成されます。
  • subscribedUsers TCHChannelsを変更する現在購読済みのTCHUserオブジェクトの一覧を同期的に返します。

現在の同期済みのChannelの一覧を取得する新しい同期メソッド、subscribedChannelsがあります。 このメソッドは非推奨となったuserChannelsWithCompletion:メソッドを置き換えるものです。 publicChannelsWithCompletion:メソッドはpublicChannelDescriptorsWithCompletion:に名前変更され、返されるオブジェクトを明確にするようになり、また新しいメソッド、userChannelDescriptorsWithCompletion:が追加されました。

TCHChannelの変更

synchronizeWithCompletion: は、TCHChannelオブジェクトはそれが読み込まれると常に同期するようになったため非推奨となりました。

TCHChannelDelegateプロトコルによってサポートされる全デリゲートメソッドには、オブジェクトが変更されたことを示すupdated変数があり、変更の性質について記されています。

TCHMembersの変更

Channelに対するTCHMembersオブジェクトのmembersWithCompletion:アクセサーはページ結果となりました。 以前これははChannelのメンバーシップの大きさにかかわらず、常に単一のページを返していました。 また、このメソッドの最初の呼び出しはチャネルのメンバーシップ一覧を削減する必要がある点に注意することが重要です。 これはChannelが取得されたが既存のMembersが追加されていない場合に暗黙的に購読されます。

TCHMemberの変更

userInfo は、Memberに対する強いアイデンティティーを提供する、新規identityプロパティーに置き換えられました。 このクラスには、便利な2つのメソッド、userDescriptorWithCompletion:、およびsubscribedUserWithCompletion:があり、それぞれTCHUserDescriptor、およびTCHUserオブジェクトを取得します。

TCHResultの変更

新しい2つのプロパティー、resultCodeおよびresultTextが追加され、操作のレスポンスに対してより多くのコンテキストを提供するようになりました。 操作が成功したかどうかを手早く確認するため、isSuccessfulブール値は引き続きご利用いただけます。

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.