我正在研究一个测验应用程序,其中有许多测验,并且用户为每个测验获得的分数都存储在服务器中。有没有一种添加条件的方法,以便特定用户仅在第一次测验中获得的分数就被记录下来;如果该用户第二次或更多次出现相同的测验,则不会记录其分数。
以下是将分数发送到服务器的代码部分。
private void sendScoreToServer(String subcategory, String username, String email, String score){
Map<String, String> params = getParams(subcategory, username, email, score);
GsonRequest<ScoreObject> serverRequest = new GsonRequest<ScoreObject>(
Request.Method.POST,
Constants.PATH_TO_ADD_SCORE,
ScoreObject.class,
params,
createRequestSuccessListener(),
createRequestErrorListener());
((CustomApplication)getApplication()).getNetworkCall().callToRemoteServer(serverRequest);
}
private Map<String, String> getParams(String subcategory, String username, String email, String score){
Map<String, String> params = new HashMap<String,String>();
params.put(Constants.SUBCATEGORY, subcategory);
params.put(Constants.NAME, username);
params.put(Constants.EMAIL, email);
params.put(Constants.SCORE, score);
return params;
}
private Response.Listener<ScoreObject> createRequestSuccessListener() {
return new Response.Listener<ScoreObject>() {
@Override
public void onResponse(ScoreObject response) {
try {
if(response != null){
Log.d(TAG, "Response value " + response);
} else{
displayErrorMessage(ResultActivity.this, "Quiz score failed to upload");
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
private Response.ErrorListener createRequestErrorListener() {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
};
}
}
据我所知,可以通过两种方式来完成,要么使用共享首选项,要么将值添加到服务器。欢迎任何输入。
我是编码方面的新手,请耐心等待。
答案 0 :(得分:0)
假设您希望他们能够重新参加测验但不再次存储分数-最简单,最安全的方法是在服务器上。当用户上传分数时,请检查并查看用户是否已经有该测验的分数。如果是这样,请不要保存新分数。