Bonjour mes amis, j'ai créé une application avec QuickBlox
. Je dois créer un 10 QBChatDialogTypePublicGroup
à partir du panneau d'administration. c'est statique. Je veux créer un groupe public statique à partir du panneau d'administration quickblox
et discuter avec n'importe quel utilisateur de ce groupe.QuickBlox - QBChatDialogTypePublicGroup: La boîte de dialogue doit être en mémoire cache
Je reçois tout ce groupe dans viewController et l'affiche. L'utilisateur peut alors choisir n'importe quel groupe pour discuter en public. J'utilise le framework quickblox pour discuter avec l'utilisateur. je suis fait QBChatDialogTypePrivate
un à un tricher utilisateur.
Login:
- (void)loginWithQuickBlox{
NSString *emaiAddress = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLogin"];
NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserPassword"];
[QBRequest logInWithUserLogin:emaiAddress password:password successBlock:^(QBResponse *response, QBUUser *user)
{
[[NSUserDefaults standardUserDefaults]setObject:[NSString stringWithFormat:@"%ld",(unsigned long)user.ID] forKey:@"USerLoginID"];
[self loginWithQuickBloxChat:user];
} errorBlock:^(QBResponse *response)
{
// error handling
NSLog(@"errorsssss : %@", response.error);
}];
}
Connectez-vous avec QuickBloxChat
- (void)loginWithQuickBloxChat:(QBUUser *)selectedUser {
QBUUser *selectedUserx = [QBUUser user];
selectedUserx.login = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserLogin"];
selectedUserx.password = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserPassword"];
selectedUserx.ID = [[[NSUserDefaults standardUserDefaults] objectForKey:@"USerLoginID"] integerValue];
NSLog(@"Currunt User : %@", [QBSession currentSession].currentUser);
[ServicesManager.instance logInWithUser:selectedUserx completion:^(BOOL success, NSString *errorMessage)
{
[[QBChat instance] connectWithUser:selectedUserx completion:^(NSError * _Nullable error) {
}];
if (success)
{
NSLog(@"Login in Quickblox : %@",selectedUser);
[self getPublicGroup];
}
else
{
NSLog(@"Error in QuickBlox : %@",errorMessage);
}
}];
}
Get Groupe Public
- (void)getPublicGroup {
NSMutableDictionary *extendedRequest = @{@"type" : @(1)}.mutableCopy;
QBResponsePage *page = [QBResponsePage responsePageWithLimit:100 skip:0];
[QBRequest dialogsForPage:page extendedRequest:extendedRequest successBlock:^(QBResponse *response, NSArray *dialogObjects, NSSet *dialogsUsersIDs, QBResponsePage *page) {
publicGroupArray = dialogObjects.mutableCopy;
NSLog(@"Public Group : %@",publicGroupArray);
[self.groupCollectionview reloadData];
} errorBlock:^(QBResponse *response) {
}];
}
Sélectionnez un groupe quelconque et discuter avec ChatViewcontroller
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
QBChatDialog *groupChatDialog = [publicGroupArray objectAtIndex:indexPath.row];
ChatViewController *chatViewController = [[ChatViewController alloc] init];
chatViewController.dialog = groupChatDialog;
chatViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:chatViewController animated:YES];
}
Ce fonctionnent parfaitement toutes les procédures, mais quand j'envoie un message de ChatViewController
il me donnera une erreur sur
échec Assertion en - [QMChatService sendMessage: toDialogID: saveToHistory: saveToStorage: achèvement:], Tous/Septembre/21/ChatApp/Pods/QMServices/QMChatService/QMChatService/QMChatService.m: 1338
Fin de l'application en raison d'une exception non interceptée 'NSInternalInconsistencyException', raison: 'La boîte de dialogue doit être dans cache mémoire!' *** Pile d'appel de premier jet:
votre réponse fonctionne parfaitement. mais j'ai une autre question que je veux documenter de QMServices Comme le noyau SDK QBRequest https://quickblox.com/developers/SimpleSample-chat_users-ios fournissez svp un lien ou n'importe quelle suggestion. – sohil
Puis-je ajouter une classe ServiceManager en utilisant un module? – sohil
S'il vous plaît jeter un oeil à la [github repo] (https://github.com/QuickBlox/q-municate-services-ios). –