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

标签 ios iphone xcode blob quickblox

我有一个要求,假设我的应用程序有 3 个用户。我想向每个用户添加一个图像(个人资料图片目的),以便使用同一应用程序的其他两个用户可以看到该图像。就像 Whatsapp 个人资料图片一样。为此我做了以下几件事。

第 1 步:以 User1 身份登录 然后我添加了这段代码来上传图像文件。当我使用 User1 凭据登录并上传文件时将公共(public)属性设置为 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意味着user1的blobID为0(所有用户blobID为0),但是上传成功后我得到了blobID使用登录的 User1 上传文件。

但是当我以 user2 或 User3 身份登录时,它不会显示与 user1 关联的任何 blobID。我在上传时将“公开”设置为"is"。 这是正确的做法还是我犯了任何错误,请告诉我?

最佳答案

您应该在 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) {
        }];

关于ios - 如何上传用户个人资料图片以及如何从其他用户设备获取该个人资料图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37043763/

相关文章:

ios - DetailTextLabel 不显示在 iOS 8 xcode 6

iphone - iOS 是否支持 HTTP Live Streaming 之外的任何内容?

android - 如何使用二维码深度链接打开智能手机默认的网络浏览器应用程序

iOS - 错误 : This action could not be completed. 再试一次 (-22421)

xcode - 在 Xcode 中使用 OpenGL 进行深度分析

iphone sdk 4.3 gdb 通知

ios - Swift - Xcode 8.3 自动完成不显示

ios - 当用户平移 map 时,iOS 6 中的 map 注释不会保持旋转

ios - 从 UIVIewController 访问 UITabBarController

iphone - iphone 中 MFMessageComposeViewController 的字符限制