LeanChat iOS ChatMince iOS | Original, traduit par l'IA
Voici le README.md du projet github https://github.com/lzwjava/leanchat-ios.
App Store
LeanChat est disponible sur l’App Store. Vous pouvez visiter https://itunes.apple.com/gb/app/leanchat/id943324553 ou rechercher LeanChat sur l’App Store.
Introduction
Ce projet d’exemple montre de manière exhaustive l’application de la fonction de communication en temps réel de LeanCloud. Cependant, il contient beaucoup de code UI et d’autres fonctionnalités, ce qui le rend peu adapté à un apprentissage rapide. Si vous êtes nouveau sur LeanMessage, nous recommandons le projet LeanMessage-Demo. Une fois que vous êtes familiarisé, vous pouvez aller sur LeanCloud-Demos pour sélectionner votre peau IM préférée pour l’intégration. Pendant l’intégration, si vous rencontrez des problèmes difficiles, vous pouvez vous référer au projet LeanChat.
Structure du projet LeanChat
- leanchat-android : client Android
- leanchat-ios : client iOS
- leanchat-webapp : client Web
- leanchat-cloud-code : côté serveur
Retours précieux
Si vous avez des questions, n’hésitez pas à créer un issue, en indiquant ce que vous ne comprenez pas, et nous vous fournirons de l’aide dès que possible.
Téléchargement
Veuillez cliquer directement sur Download Zip
sur Github comme indiqué sur l’image ci-dessous pour télécharger uniquement la dernière version. Si vous utilisez git clone
, cela peut être très lent car il inclut un grand historique de commits. Lors d’un test, la différence était de 1,5M:40M.
Exécution
// LeanChat (Exemple complexe)
cd LeanChat
pod install --verbose // Si vous avez la bibliothèque de dépendance AVOSCloud localement, vous pouvez ajouter l'option --no-repo-update pour accélérer le processus
open LeanChat.workspace
// LeanChatExample (Exemple simple)
cd LeanChatExample
pod install --verbose --no-repo-update
open LeanChatExample.xcworkspace
// LeanChatSwift (Exemple Swift)
cd LeanChatSwift
pod install --verbose --no-repo-update
open LeanChatSwift.xcworkspace
// LeanChatLib (Bibliothèque encapsulant les composants de communication LeanCloud et l'UI)
cd LeanChatLib
pod install --verbose --no-repo-update
open LeanChatLib.xcworkspace
Si vous rencontrez des problèmes comme definition of 'AVUser' must be imported from module 'LeanChatLib.CDChatListVC' before it is required
, vous pouvez maintenir la touche Option dans le menu Produit et cliquer sur Clean Build Folder pour effacer tous les fichiers de Build, puis recompiler. Ce problème semble être un bug lorsque Cocoapods effectue une compilation complexe. Vous pouvez voir ce Gif pour plus de détails.
Veuillez noter que, en raison de l’utilisation par défaut des certificats de production, il n’y a pas de notifications push pour les messages hors ligne pendant le développement. Cependant, les notifications push sont disponibles dans la version en ligne, que vous pouvez télécharger depuis l’App Store. Pour plus de détails, vous pouvez également vous référer à ce issue.
Vous pouvez voir trois projets, comme décrit ci-dessous.
Introduction aux sous-projets
- LeanChatLib : la bibliothèque de logique et d’interface utilisateur principale pour la discussion. Avec elle, vous pouvez rapidement intégrer la fonctionnalité de discussion, prenant en charge les messages texte, audio, image et emoji, ainsi que les notifications de messages. Il existe également une version Android correspondante.
- LeanChatExample : l’exemple d’utilisation le plus simple de LeanChatLib. Il montre comment utiliser un minimum de code pour appeler LeanChatLib et rejoindre une discussion, que vous utilisiez le système d’utilisateurs de LeanCloud ou votre propre système d’utilisateurs.
- LeanChat-ios : l’application LeanChat complète. Elle inclut des fonctionnalités telles que la gestion des amis, la gestion des groupes, la messagerie basée sur la localisation, les utilisateurs à proximité, les pages personnelles, la connexion et l’inscription, toutes basées sur les capacités de stockage et de communication de LeanCloud. C’est une application plus complexe de LeanChatLib.
Introduction à LeanChatLib
Il encapsule la page des conversations récentes et la page de discussion. Les projets LeanChat et LeanChatExample en dépendent. Vous pouvez l’installer comme suit,
pod 'LeanChatLib'
La plupart du temps, vous intégrerez LeanChatLib en faisant glisser le code source dans votre projet. Dans ce cas, vous devez d’abord installer AVOSCloud.framework
et AVOSCloudIM.framework
. Si vous n’avez pas utilisé pod install 'AVOSCloud'
, pod install 'AVOSCloudIM'
pour installer, vous pouvez configurer les Frameworks nécessaires selon le Guide de démarrage rapide de LeanCloud. Installez également deux autres bibliothèques dépendantes JSBadgeView
et DateTools
. Lors de l’exécution de pod install
pour cette Démonstration, un répertoire Pods sera généré, à partir duquel vous pouvez trouver ces deux Pods. Sinon, vous pouvez rechercher en ligne. Vous pouvez également le configurer via le fichier .podspec, qui décrit quels fichiers sources doivent être intégrés et quels frameworks système doivent être introduits, etc. Ou, veuillez vous référer à ce ticket.
Comment ajouter IM en trois étapes
- Créez une application dans LeanCloud.
- Ajoutez la dépendance du pod LeanChatLib, ou faites glisser les fichiers de code LeanChatLib dans votre projet pour une personnalisation UI plus facile et un ajustement des fonctionnalités.
- Ajoutez le code suivant aux endroits appropriés,
À l’ouverture de l’application, initialisez et configurez l’utilisateur IM,
[AVOSCloud setApplicationId:@"YourAppId" clientKey:@"YourAppKey"];
[CDChatManager manager].userDelegate = [[CDUserFactory alloc] init];
Configurez une UserFactory, qui se conforme au protocole CDUserDelegate.
#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); // n'oubliez pas cela
}
-(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
Ici, CDUser est l’objet Utilisateur au sein de l’application et vous pouvez mettre en œuvre le protocole CDUserModel dans votre objet Utilisateur.
CDUserModel,
@protocol CDUserModel <NSObject>
@required
-(NSString*)userId;
-(NSString*)avatarUrl;
-(NSString*)username;
@end
Appelez lors de la connexion,
[[CDChatManager manager] openWithClientId:selfId callback: ^(BOOL succeeded, NSError *error) {
if (error) {
DLog(@"%@", error);
}
else {
// allez au Contrôleur Principal
}
}];
Pour discuter avec quelqu’un,
[[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];
}
}];
Pour une discussion de groupe,
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];
}
}];
Lors de la déconnexion,
[[CDChatManager manager] closeWithCallback: ^(BOOL succeeded, NSError *error) {
}];
Ensuite, vous pouvez discuter comme montré dans la capture d’écran ci-dessus. Notez que nous ne recommandons actuellement pas d’utiliser la méthode pod pour importer directement LeanChatLib car certaines interfaces et fonctionnalités doivent être personnalisées par vous. Par conséquent, nous recommandons de copier le code LeanChatLib dans le projet pour une personnalisation plus facile.
LeanChatLib ChangeLog
0.2.6
Mise à jour du SDK vers 3.1.4 pour s’adapter à iOS 9
0.2.5
Utilisation de cachePolicy dans AVIMConversationQuery pour économiser le trafic et mieux supporter le hors ligne Correction d’un bug où l’appel de fetchConvWithConvid lorsque la conversation n’existe pas peut provoquer un plantage
0.2.4
Ajout de l’icône Tuzki
0.2.3
Ajout d’une vérification des paramètres pour l’interface fetchConvWithMembers:, correction d’un potentiel plantage dans la liste des conversations lorsqu’il s’agit d’une discussion individuelle mais qu’elle n’a qu’un seul membre
0.2.2
Mise à jour de la bibliothèque AVOSCloud vers 3.1.2.8
0.2.1
ChatListDelegate ajoute les interfaces configureCell: et prepareConversaion: pour une personnalisation plus complexe des conversations.
Pour les messages d’images, utilisez AVFile pour mettre en cache les images, de sorte que vos propres photos envoyées n’aient pas besoin d’être téléchargées à nouveau.
0.2.0
Ajout de commentaires, support du réenvoi des messages, affichage des messages échoués, ajout d’effets sonores et de vibrations
0.1.3
Correction d’un bug où l’application pouvait planter lors du chargement rapide des messages historiques en tirant vers le bas
0.1.2
Utilisation du cache de discussion SDK, suppression de la dépendance FMDB. Vous pouvez voir les messages historiques sur le serveur et les enregistrements de discussion historiques même après réinstallation. Suppression de la classe CDNotify.
0.1.1
Refonte
0.1.0
Version initiale
Notes de déploiement pour LeanChat
Si vous souhaitez déployer LeanChat complète, puisque l’application a une fonctionnalité d’ajout d’amis, veuillez allez dans Paramètres->Options de l’application et cochez l’option Suivi mutuel afin que lorsque l’une des parties accepte, elles puissent s’ajouter mutuellement en amis.
Guide de développement
Guide de développement du service de messagerie en temps réel
Remerciements
Merci à la grande bibliothèque open-source MessageDisplayKit par Xian-Hua Han.