Quickblox - получение аватаров друзей пользователей и отображение в UITableView

Мне нужно отобразить изображения аватаров всего списка друзей внутри UITableView.

Я мог бы также спросить об этом на форумах Quickblox, но, похоже, их поддержка там менее отзывчива.

Я прочитал документацию Quickblox, но не могу найти эффективный способ получения изображений аватара пользователя. Я вижу только [QBContent TDownloadFileWithBlobID], но не знаю, как им пользоваться.

Я получаю контакты с помощью chatContactListDidChange вызова делегата, как показано ниже. Как я могу получить изображения аватаров всех этих пользователей?

Обратите внимание, что friendsArray - это мой источник данных для представления таблицы, поэтому в идеале я хотел бы хранить изображения аватаров как часть того же массива.

- (void)chatContactListDidChange:(QBContactList *)contactList
{
    NSLog(@"contact list changed");
    NSLog(@"current contact list %@", [QBChat instance].contactList);
    [self fetchContacts:[QBChat instance].contactList.contacts];
}

- (void) fetchContacts : (NSArray *) contactArray
{
    NSMutableArray * userIDArray = [[NSMutableArray alloc] init];
    for (QBContactListItem * contact in contactArray)
    {
        NSString * userIDString = [NSString stringWithFormat:@"%ld", (unsigned long)contact.userID];
        [userIDArray addObject:userIDString];
    }

    if (!userIDArray.count)
    {
        return;
    }

    NSString * requestString = [userIDArray componentsJoinedByString:@","];
    [QBUsers usersWithIDs:requestString delegate:self context:@"FetchFriends"];
}

- (void)completedWithResult:(Result *)result context:(void *)contextInfo
{
    if([result isKindOfClass:[QBUUserPagedResult class]])
    {
        NSString * context = (__bridge NSString *)contextInfo;
        // Success result
        if(result.success)
        {
            QBUUserPagedResult * pagedResult = (QBUUserPagedResult *)result;
            if ([context isEqualToString:@"FetchFriends"])
            {
                if (friendsArray)
                {
                    [friendsArray removeAllObjects];
                }
                else
                {
                    friendsArray = [[NSMutableArray alloc] init];
                }

                QBUUser * user = [pagedResult.users objectAtIndex:0];
                //user.blobID   
                friendsArray addObjectsFromArray:pagedResult.users];
            }            
        }
        else
        {
            NSLog(@"Error getting users: %@", context);
        }
    }
}

person Nirav Bhatt    schedule 27.10.2014    source источник


Ответы (1)


Используйте поля QBUUser - customData для общедоступного URL изображения пользователя и blobID для загруженного большого двоичного объекта.

Изображение -> [QBContent TUploadFile ...] -> Получение обратного вызова с результатом (QBCFileUploadTaskResult) -> получение большого двоичного объекта (QBCBlob) -> сохранить идентификатор большого двоичного объекта в user.blobID -> получить общедоступный URL-адрес вашего изображения: [ currentBlob publicURL] -> сохранить в user.customData -> обновить пользователя: [QBUsers updateUser ...] Надеюсь, это поможет вам.

person igor_alefirenko    schedule 06.11.2014