如何为Android App的每个用户创建一个唯一的ParseObject?

时间:2013-06-03 18:58:14

标签: android parse-platform

我的应用程序检索每小时用户所在位置的GPS位置。如果用户更新列表,那么我要么从ParseCloud添加或删除该项目。

截至目前,我实例化了一个ParseObject

private ParseObject locationItem = new ParseObject("LocationInformation"); 

然后我使用我的密钥初始化Parse并打开分析

Parse.initialize(this, "KEY", "KEY"); 
    ParseAnalytics.trackAppOpened(getIntent());

如果位置可用(在LocationListener的onLocationChanged方法内),我将纬度和经度添加到locationItem

locationItem.put("latitude", location.getLatitude()); 
locationItem.put("longitude", location.getLongitude()); 
locationItem.saveEventually(); 

我使用item和密钥deletedItem或addItem更新ParseCloud,以便我可以在add中包含位置信息。

locationItem.put("addItem", blackListItem);

或     locationItem.put(“deleteItem”,blackListItem); 我调用相同的lat / long方法将其放入项目并将其更新到云端。

由于我希望所有这些更新都是基于每个用户存储的,所以我想知道这样做的正确方法。我怀疑我需要以某种方式使用ParseUser类,但我很困惑如何。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

阅读涵盖用户和用户表的手册。在应用程序的第一个配置中,它应该创建一个新的解析用户,然后使用几种技术之一将其他数据类型关联到新用户。

使用Rest API和android,您至少可以使用答案here通过在“LocalInformation”类对象中包含的所有ACL对象中包含该用户的oid以及通过包含用户的令牌来关联用户在POST /获取“LocalInformation”类型时在http标头中。

答案 1 :(得分:0)

您可以让用户创建一个新帐户,或使用他们的Facebook或Twitter帐户登录,然后将ParseObject与ParseUser相关联。

一旦您让用户使用新帐户登录,或使用他们的Facebook或Twitter帐户登录,ParseUser对象就不会为空。

final boolean isLoggedIn = ParseUser.getCurrentUser() != null;  //isLoggedIn should be true 
之后

然后简单地创建对象并将其与ParseUser关联。

ParseUser mUser = ParseUser.getCurrentUser(); 

ParseObject mItem = new ParseObject("LocationInformation");
mItem.put("latitude", location.getLatitude()); 
mItem.put("longitude", location.getLongitude()); 
mItem.put("UniqueUser", mUser ); 
mItem.saveInBackground(); 

您使用查询来查找与特定唯一身份用户关联的对象。

ParseQuery<ParseObject> query = ParseQuery.getQuery("LocationInformation");
query.whereEqualTo("UniqueUser", ParseUser.getCurrentUser()); 

//if running this code on a background thread, otherwise use a callback
try
{
  //should be unique object associated with a user
  ParseObject mItem = query.getFirst(); 
}
catch( ParseException e )
{
//DEBEUG
}