【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 を例に取りましょう:
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 の一部であるため、ここにも連絡先を追加しました。
会話型チャット インターフェイス (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 の表示に役立ちます。