【iOS】APP IMチャットフレームワークデザイン(サードパーティSDKベース)

【iOS】APP IMチャットフレームワークデザイン(サードパーティSDKベース)

序文

ソーシャルチャットアプリを開発する上で、IMは必須の機能であり、多くの企業のIMサービスはサードパーティに接続されており、自社開発のものはほとんど使用されていません.国内のIMメーカーも非常に成熟しています.ソリューションもサードパーティに基づいています. party SDK; 自社開発の Tencent、Huanxin、Rongyun、Shengwang の IM サービスを使用しています。

APP IM フレームワークには、次の利点があるか、いくつかの点を優先する必要があります。

  • 1. ビジネス シナリオを完全にサポートします。

  • 2. プロダクトマネージャーのさまざまな「困りごと」に対応できるスケーラビリティ(能力、UI)が強い。

  • 3. サードパーティの IM SDK は、APP ビジネスとの絡みがほとんどなく、いつでも交換できます。

  • 4. ローカライズされたデータ (通常はユーザー情報とチャット記録) を保存すると便利です。

IM機能

サードパーティの IM SDK に接続するときは、最初にサードパーティの SDK に基づいてパッケージを作成する必要があります。これにより、将来サプライヤーを切り替えた場合でも、パッケージの実績を変更するだけでよく、基本的に影響はありません。私たちのビジネス API と UI ; 封印された SMTXIMManager を例に取りましょう:
SMIMマネージャー

QA: 2. 強力なスケーラビリティ (機能、UI)、プロダクト マネージャーのさまざまな「困難」に対処できる;
需要: プロダクト マネージャーは、ユーザーがチャット インターフェイスで曲を注文する需要を追加したいと考えています。
分析: ユーザー A がユーザー B のために曲を注文し、ユーザー A が曲を選択して B に送信します。カスタム メッセージが A と B の両方のメッセージ リストに追加され、再生コントローラーがポップアップして再生されます。 song; development:
1
. まず、SMIMManager にカスタム メッセージ タイプを追加します;
2. ちょっと待って...

QA: 3. サードパーティの IM SDK は、APP ビジネスとの絡みがほとんどなく、いつでも置き換えることができます。

あとは、SMIMManager と SDK のバインディングを変更するだけでいいので、実際には他のビジネス モジュールを変更する必要はありませんし、2 つの IM SDK を同時に APP に統合することもできるので、判断する必要があります。 SMIMManager で。

UI フレームワーク

通常、IM 関連のコントローラーは 2 つだけで、1 つはセッション リスト インターフェイスで、もう 1 つはチャット インターフェイスです。次のように、連絡先も APPIM の一部であるため、ここにも連絡先を追加しました。
IM UI フレームワーク

会話型チャット インターフェイス (SMChatViewController)

メッセージ一覧 (SMMessageController)

これは主に IM メッセージの表示を担当し、SMIMManager によってカプセル化された API は、キャッシュされたチャット履歴の取得、新しいメッセージの表示、メッセージの取り消しなど、ここでの呼び出しを担当します。
SMMessageController は、下図に示すように、主にメッセージのセルとデータを使用します。
ここに画像の説明を挿入
ここに画像の説明を挿入
上記の階層モードでは、多くの初心者 Xiaobai が一目で理解できます。
QA: 2. 強力なスケーラビリティ (機能、UI)、プロダクト マネージャーのさまざまな「困難」に対処できる;
需要: プロダクト マネージャーは、ユーザーがチャット インターフェイスで曲を注文する需要を追加したいと考えています。
分析: ユーザー A がユーザー B のために曲を注文し、ユーザー A が曲を選択して B に送信します。カスタム メッセージが A と B の両方のメッセージ リストに追加され、再生コントローラーがポップアップして再生されます。曲; 開発:
1.
まず、SMIMManager にカスタム メッセージ タイプを追加します;
2. カスタム SMMusicMessageCell と SMMusicMessageCellData を追加し、リストに登録して分析します;
3. SMMusicMessageCell メッセージをクリックすると、パッケージが呼び出されますソングプレーヤーが再生されます。

SMInputController (入力ボックス)

入力ボックスは、次のように、テキスト入力、言語入力、絵文字パック、写真、ビデオ、ギフトなどを統合します。
ここに画像の説明を挿入

関連する構造図は次のとおりです。
ここに画像の説明を挿入

SMShowVipGiftView(プレゼント、曲の注文、会員制などの有料サービス)

これは、SMInputBar のギフト ボタンで呼び出されるカプセル化されたポップアップ レイヤーであり、何も言うことはありません。

フレンドリスト (SMContactsListViewController)

これについては言うまでもありませんが、SMUserRelationship は関連する API を既にカプセル化しています。

会話リスト (SMConversationListViewController)

システム メッセージ、メッセージの集約、セッションの削除、セッションのトッピング、未読のマークがあり、SMIMManager と SMUserRelationship も関連する API をカプセル化しています。

QA: 1. ビジネス シナリオを完全にサポートしていますが、
上記の設計はあなたのビジネスに完全に適合しますか?

保管所

プロジェクトで使用されるローカル データ ストレージの最下層は、sqlite とサードパーティのFMDB GitHubオープン ソース フレームワークを使用します. インターネット上の FMDB に基づく多くのセカンダリ パッケージも非常に優れています. IM は主にストレージ用です.ユーザー情報とチャットデータの暗号化. 検討したい場合 セキュリティに関しては、データベースの暗号化を選択できます. ここでは暗号化については話しません. いつかモバイル端末のセキュリティについて話す時間があります.

QA: 4. ローカライズされたデータ ストレージは便利で、一般的にユーザー情報とチャット レコードです;
ここでの便利さは、パッケージングの使いやすさ、アクセス セキュリティ、およびローカル データ セキュリティだと思います。

他の

写真や動画などのメッセージを送信する場合、通常はクラウド ストレージ (Qiniu、OSS など) にアップロードし、クラウド ストレージのリンクをカスタム メッセージ形式にして相手に送信します。

リソースファイルに名前を付けるときは、写真やビデオの幅、高さ、形式などの情報を追加するのが最善です。これにより、リンクを取得したときに、ネットワークがうまくいかなくても、最初にコンテナーを設定できます。ページ UI の表示に役立ちます。

おすすめ

転載: blog.csdn.net/u014220518/article/details/129026495