如何上传用户个人资料图片以及如何从其他用户设备获取该个人资料图片?

时间:2016-05-05 06:22:48

标签: ios iphone xcode blob quickblox

我有一个要求,让我们说我的应用程序有3个用户。我想为每个用户添加一个图像(配置文件图片用途),以便其他两个使用相同应用程序的用户可以看到此图像。就像whatsapp个人资料图片一样。所以为此我做了以下事情。

第1步:以User1身份登录 然后我添加了这段代码来上传图片文件。在我使用User1凭据登录后,我在上传文件时将公共属性设置为YES。

NSData *imageData = UIImagePNGRepresentation([UIImage imageNamed:@"arrow.png"]);

[QBRequest TUploadFile:imageData fileName:@"arrow.png" contentType:@"image/png" isPublic:YES successBlock:^(QBResponse *response, QBCBlob *blob) {

} statusBlock:^(QBRequest *request, QBRequestStatus *status) {
} errorBlock:^(QBResponse *response) {
}];  

第2步:以User2身份登录

然后我确实喜欢这个我提取所有用户属于我的应用程序。使用

QBGeneralResponsePage *responsePage = [QBGeneralResponsePage responsePageWithCurrentPage:currentPage perPage:perPage];

[QBRequest usersForPage:responsePage successBlock:^(QBResponse *response, QBGeneralResponsePage *page, NSArray *users) {

    weakSelf.allUsers = [users mutablecopy]
    [weakSelf.tableView reloadData];

} errorBlock:^(QBResponse *response) {

}];

第3步: 现在我拥有所有用户,所以我正在进行迭代以查找用户blob id。

    QBUUser *user = (QBUUser *)self.allUsers[indexPath.row];


if (user.blobID != 0) {

    [QBRequest downloadFileWithID:user.blobID successBlock:^(QBResponse *response, NSData *fileData) {

        UIImage *img=[UIImage imageWithData:fileData];
        [cell.imageView setImage:img];

    } statusBlock:^(QBRequest *request, QBRequestStatus *status) {

    } errorBlock:^(QBResponse *response) {

    }];
}

但问题是在这里我没有得到任何blobID,User1意味着 blobID的user1为0 (所有用户blobID为0),但上传它是成功的我得到了在登录后使用User1上传文件后的blobID。

但是当我以user2或User3 登录时,它没有显示与user1关联的任何blobID。我在上传时将公开视为是。 这是正确的做法还是我正在做的任何错误请告诉我?

1 个答案:

答案 0 :(得分:3)

您应该在blob上传后使用QBUpdateUserParameters请求更新用户的blobID:

      [QBRequest TUploadFile:imageData fileName:@"arrow.png" contentType:@"image/png" isPublic:YES successBlock:^(QBResponse *response, QBCBlob *blob) {

            QBUpdateUserParameters *userParams = [QBUpdateUserParameters new];
            userParams.blobID = blob.ID;

            [QBRequest updateCurrentUser:userParams successBlock:^(QBResponse * _Nonnull __unused response, QBUUser * _Nullable user) {
            } errorBlock:^(QBResponse * _Nonnull response) {

            }];

        } statusBlock:^(QBRequest *request, QBRequestStatus *status) {

        } errorBlock:^(QBResponse *response) {
        }];