LeanChat iOSは | オリジナル、AI翻訳

Home PDF

このREADME.mdは、GitHubプロジェクトhttps://github.com/lzwjava/leanchat-iosからのものです。


ライセンスMIT  CocoaPods  CocoaPods  サポート

leanchat

App Store

LeanChatはApp Storeで利用できます。以下のURLを訪れてください。https://itunes.apple.com/gb/app/leanchat/id943324553 または、App StoreでLeanChatを検索してください。

はじめに

この例プロジェクトは、LeanCloudのリアルタイム通信機能の応用を包括的に示しています。ただし、UIコードや他の機能が多く含まれており、迅速な学習には向いていません。LeanMessageに新しい方は、LeanMessage-Demoプロジェクトをお勧めします。理解が深まったら、LeanCloud-Demosに進み、好きなIMスキンを選んで統合してください。統合中に難しい問題に直面したら、LeanChatプロジェクトを参考にしてください。

LeanChatプロジェクトの構造

有益なフィードバック

質問があれば、issueを立てて、わからない点を記載してください。できるだけ早くサポートいたします。

ダウンロード

以下の画像に示すように、Githubの「Download Zip」を直接クリックして最新バージョンをダウンロードしてください。git cloneを使用すると、大量のコミット履歴を含むため非常に遅くなることがあります。試験では1.5M:40Mの違いがあります。

qq20150618-2 2x

実行

  // LeanChat (複雑な例)
  cd LeanChat
  pod install --verbose  // AVOSCloud依存ライブラリがローカルにある場合、--no-repo-updateオプションを追加してプロセスを加速できます
  open LeanChat.workspace

  // LeanChatExample (簡単な例)
  cd LeanChatExample
  pod install --verbose --no-repo-update
  open LeanChatExample.xcworkspace

  // LeanChatSwift (Swift例)
  cd LeanChatSwift
  pod install --verbose --no-repo-update
  open LeanChatSwift.xcworkspace

  // LeanChatLib (LeanCloud通信コンポーネントとUIをカプセル化するライブラリ)
  cd LeanChatLib
  pod install --verbose --no-repo-update
  open LeanChatLib.xcworkspace

definition of 'AVUser' must be imported from module 'LeanChatLib.CDChatListVC' before it is requiredのような問題が発生した場合、ProductメニューでOptionキーを押しながらClean Build Folderをクリックしてすべてのビルドファイルをクリアし、再コンパイルしてください。この問題は、Cocoapodsが複雑なコンパイルを実行している際のバグのようです。このGifを参照してください。

デフォルトでは生産用証明書を使用しているため、開発中にオフラインメッセージのプッシュ通知はありません。ただし、オンラインエディションはApp Storeからダウンロードでき、プッシュ通知が利用できます。詳細については、このissueをご参照ください。

以下に、3つのプロジェクトの説明があります。

サブプロジェクトの紹介

LeanChatLibの紹介

最新の会話ページとチャットページをカプセル化しています。LeanChatとLeanChatExampleプロジェクトの両方が依存しています。以下のようにインストールできます。

    pod 'LeanChatLib'

ほとんどの場合、LeanChatLibをプロジェクトにドラッグしてソースコードを統合することで、LeanChatLibが統合されます。この場合、AVOSCloud.frameworkAVOSCloudIM.frameworkをインストールする必要があります。pod install 'AVOSCloud'pod install 'AVOSCloudIM'を使用してインストールしていない場合、pod installを実行する前に必要なフレームワークをLeanCloudのクイックスタートガイドに従って設定してください。また、他の2つの依存ライブラリJSBadgeViewDateToolsをインストールしてください。pod installを実行すると、このDemo用にPodsディレクトリが生成され、このディレクトリから2つのPodを検索できます。オンラインで検索することもできます。また、.podspecファイルを通じて設定することもできます。このファイルでは、統合する必要があるソースファイルと導入する必要があるシステムフレームワークについて説明しています。または、このチケットを参照してください。

3ステップでIMを追加する方法

  1. LeanCloudでアプリケーションを作成します。
  2. LeanChatLibのpod依存関係を追加するか、UIのカスタマイズや機能の調整がしやすいようにLeanChatLibのコードファイルをプロジェクトにドラッグして追加します。
  3. 適切な場所に以下のコードを追加します。

アプリケーションの起動時に、IMユーザーを初期化および設定します。

    [AVOSCloud setApplicationId:@"YourAppId" clientKey:@"YourAppKey"];
    [CDChatManager manager].userDelegate = [[CDUserFactory alloc] init];

CDUserDelegateプロトコルを実装するUserFactoryを設定します。

#import "CDUserFactory.h"

#import <LeanChatLib/LeanChatLib.h>

@interface CDUserFactory ()<CDUserDelegate>

@end

@implementation CDUserFactory

#pragma mark - CDUserDelegate
-(void)cacheUserByIds:(NSSet *)userIds block:(AVIMArrayResultBlock)block{
    block(nil,nil); // 忘れないでください
}

-(id<CDUserModel>)getUserById:(NSString *)userId{
    CDUser* user=[[CDUser alloc] init];
    user.userId=userId;
    user.username=userId;
    user.avatarUrl=@"http://ac-x3o016bx.clouddn.com/86O7RAPx2BtTW5zgZTPGNwH9RZD5vNDtPm1YbIcu";
    return user;
}

@end

ここでCDUserはアプリケーション内のUserオブジェクトであり、UserオブジェクトにCDUserModelプロトコルを実装できます。

CDUserModel、

@protocol CDUserModel <NSObject>

@required

-(NSString*)userId;

-(NSString*)avatarUrl;

-(NSString*)username;

@end

ログイン時に呼び出します。

        [[CDChatManager manager] openWithClientId:selfId callback: ^(BOOL succeeded, NSError *error) {
            if (error) {
                DLog(@"%@", error);
            }
            else {
               //メインコントローラーへ進む
            }
        }];

誰かとチャットするには、

        [[CDChatManager manager] fetchConvWithOtherId : otherId callback : ^(AVIMConversation *conversation, NSError *error) {
            if (error) {
                DLog(@"%@", error);
            }
            else {
                LCEChatRoomVC *chatRoomVC = [[LCEChatRoomVC alloc] initWithConv:conversation];
                [weakSelf.navigationController pushViewController:chatRoomVC animated:YES];
            }
        }];

グループチャットするには、

        NSMutableArray *memberIds = [NSMutableArray array];
        [memberIds addObject:groupId1];
        [memberIds addObject:groupId2];
        [memberIds addObject:[CDChatManager manager].selfId];
        [[CDChatManager manager] fetchConvWithMembers:memberIds callback: ^(AVIMConversation *conversation, NSError *error) {
            if (error) {
                DLog(@"%@", error);
            }
            else {
                LCEChatRoomVC *chatRoomVC = [[LCEChatRoomVC alloc] initWithConv:conversation];
                [weakSelf.navigationController pushViewController:chatRoomVC animated:YES];
            }
        }];

ログアウトするには、

    [[CDChatManager manager] closeWithCallback: ^(BOOL succeeded, NSError *error) {
    }];

これで、上のスクリーンショットに示すようにチャットすることができます。現在、Podメソッドを使用してLeanChatLibを直接インポートすることはお勧めしません。いくつかのインターフェースと機能は、あなたがカスタマイズする必要があるためです。したがって、プロジェクトにLeanChatLibのコードをコピーしてカスタマイズを簡略化することをお勧めします。

LeanChatLibの変更履歴

0.2.6

SDKを3.1.4にアップグレードしてiOS 9に適合

0.2.5

AVIMConversationQueryでcachePolicyを使用してトラフィックを節約し、オフラインサポートを向上

fetchConvWithConvidを呼び出す際に会話が存在しない場合にクラッシュが発生する問題を修正

0.2.4

Tuzki絵文字を追加

0.2.3

fetchConvWithMembers:インターフェースにパラメータの検証を追加し、会話リスト内でのクラッシュの可能性を修正

0.2.2

AVOSCloudライブラリを3.1.2.8にアップグレード

0.2.1

ChatListDelegateにconfigureCell:とprepareConversaion:インターフェースを追加して、より複雑な会話のカスタマイズが可能

画像メッセージの場合、AVFileを使用して画像をキャッシュするため、自分の送った写真を再度ダウンロードする必要がなくなります。

0.2.0

コメントを追加し、メッセージの再送、失敗したメッセージの表示、サウンドエフェクトと振動をサポート

0.1.3

swiftly pull-downで履歴メッセージを読み込む際にアプリがクラッシュする問題を修正

0.1.2

SDKのチャットキャッシュを使用し、FMDB依存を削除。サーバー上の履歴メッセージを表示でき、再インストール後の履歴チャットレコードを保持できるようになります。CDNotifyクラスを削除

0.1.1

リファクタリング

0.1.0

初期リリース

LeanChatのデプロイメントノート

完全なLeanChatをデプロイしたい場合、アプリケーションには友人追加機能がありますので、設定→アプリケーションオプションに進み、相互フォローオプションをオンにしてください。一方が同意すると、お互いに友達として追加できます。

qq20150407-5

開発ガイド

リアルタイムメッセージングサービスの開発ガイド

さらに詳細

謝辞

素晴らしいオープンソースライブラリMessageDisplayKitを提供してくれた宋欣華さんに感謝します。


Back 2025.04.02 Donate