È possibile reimpostare i risultati ottenuti/la classifica dalla mia applicazione Android utilizzata con i servizi di giochi di Google Play?Ripristina risultati/classifica dalla mia applicazione Android
8
A
risposta
15
Sì, questo è possibile dai conti di prova. È un po 'complicato, quindi ecco qualche codice di esempio.
Aggiungi questo nel vostro manifesto:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
E qui è il codice vero e proprio da eseguire nell'applicazione. Aggiunto nell'attività basata su BaseGameActivity.
public void resetAchievements()
{
if(isSignedIn())
{
String accountName = getGamesClient().getCurrentAccountName();
String scopes = getScopes();
new ResetterTask(this, accountName, scopes).execute((Void) null);
}
}
private class ResetterTask extends AsyncTask<Void, Void, Void>
{
public String mAccountName;
public String mScope;
public Context mContext;
public ResetterTask(Context con, String name, String sc)
{
mContext = con;
mAccountName = name;
mScope = sc;
}
@Override
protected Void doInBackground(Void... params)
{
try
{
String accesstoken = GoogleAuthUtil.getToken(mContext, mAccountName, mScope);
HttpClient client = new DefaultHttpClient();
//Reset leader board:
/*String leaderboardid = "theleaderboardid";
HttpPost post = new HttpPost
(
"https://www.googleapis.com"+
"/games/v1management"+
"/leaderboards/"+
leaderboardid+
"/scores/reset?access_token="+accesstoken
);*/
//Reset a single achievement like this:
/*
String acheivementid = "acheivementid";
HttpPost post = new HttpPost
(
"https://www.googleapis.com"+
"/games/v1management"+
"/achievements/"+
acheivementid+
"/reset?access_token="+accesstoken
);*/
//This resets all achievements:
HttpPost post = new HttpPost
(
"https://www.googleapis.com"+
"/games/v1management"+
"/achievements"+
"/reset?access_token="+accesstoken
);
client.execute(post);
Log.w(LogTag, "Reset achievements done.");
}
catch(Exception e)
{
Log.e(LogTag, "Failed to reset: " + e.getMessage(), e);
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
//Launch activity to refresh data on client.
//NOTE: Incremental achievements will look like they are not reset.
//However, next time you and some steps it will start from 0 and
//gui will look ok.
startActivityForResult(getGamesClient().getAchievementsIntent(), 0);
}
}
1
C'è un altro modo per ottenerlo. Vai alla tua classifica (s) nell'area dei servizi di gioco del sito sviluppatore. Quindi scegli una delle tue classifiche. Modificare l'opzione Ordine 'Più grande è meglio' a 'Più piccolo è meglio' o viceversa. Salva poi vai a cambiarlo.
Questo cancellerà tutti i valori che hai attualmente per quella classifica, e naturalmente è fattibile solo durante i test.
Sto provando a farlo funzionare con l'ultima API ma sto lottando con "getScopes()". Qualcuno può dirmi dove lo trovo? O cosa dovrebbe tornare? Grazie. –
@Will Calderwood Questo metodo funziona ancora, ma google ha cambiato la sua API GamesClient. puoi usare "[email protected]" per email e "oauth2: h ttps: //www.googleapis.com/auth/games" per scope (nospace) – Gak2