QuickBlox用户注册并创建自定义表原子性问题

时间:2013-12-15 02:25:18

标签: quickblox

我支持移动用户注册(iOS)的“性别”字段。为此,我使用一个自定义表(名为UserResourceTable,URT)来存储性别字段(整数),我依靠作为用户的表的所有者为每个用户查找相应的URT表。

告诉我以下方案是否是正确的实施方案。

在用户注册该服务时,我有一个指定的预先存在的应用程序帐户,用于创建用户帐户(可能是因为有人必须首先登录该服务才能创建帐户,对吗?)。同时,我想创建URT并存储性别字段。这需要至少两次传递给QuickBlox服务器,一次用于创建用户帐户,另一次用于创建URT表。

但是,如果我使用预先存在的应用帐户创建URT,则所有者将成为该帐户而不是移动用户。那么正确的注册顺序是用户首先登录,然后创建URT?或者有没有办法将所有权分配给另一个帐户?我的三个HTTP请求似乎有点过分,我担心(1)可能需要太长时间,或者(2)如果出现问题我将处于不一致状态,我需要询问用户用户下次登录时再次显示性别。

1 个答案:

答案 0 :(得分:1)

  

在用户注册该服务时,我有一个指定的预先存在的应用程序   创建用户帐户的帐户(可能是因为某人有   首先登录服务创建帐户,   右?)。

要创建新用户,您实际上不需要创建用户帐户的预先存在的应用帐户。根据QuickBlox iOS文档 - 您可以使用应用程序会话令牌(而非用户会话令牌)创建用户http://quickblox.com/developers/IOS#A_couple_of_words_about_Authentication_and_Authorization

  

但是,如果我使用预先存在的应用帐户创建URT,那么   所有者将成为该帐户而不是移动用户。

你是对的,这是不好的解决方案

我看到了两种方法:

1)使用CustomObjects存储性别(按照您的建议)。

在这种情况下,您需要执行3次查询:

  1. 用户注册
  2. 用户登录
  3. 创建CustomObjects记录
  4. 2)使用用户标签API

    在这种情况下,您只需执行1次查询 - 用户注册:

    QBUUser *user = [QBUUser user];
    user.email = @"qbuser5@gmail.com";
    user.password = @"qbuserr345";
    user.tags = @[@"male"]; // or female
    
    [QBUsers signUp:user delegate:self];
    

    要检索所有“男性”用户或“女性”:

    [QBUsers usersWithTags:@[@"male"] delegate:self];