【问题标题】:Reset achievements/leaderboard from my Android application从我的 Android 应用程序中重置成就/排行榜
【发布时间】:2013-07-13 13:59:01
【问题描述】:

我可以通过与 Google Play 游戏服务一起使用的 Android 应用程序重置我的成就/排行榜结果吗?

【问题讨论】:

    标签: android google-play-games


    【解决方案1】:

    是的,这可以通过测试帐户实现。这有点棘手,所以这里有一些示例代码。

    将此添加到您的清单中:

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.INTERNET" />
    

    这是要在应用程序中执行的实际代码。在基于 BaseGameActivity 的 Activity 中添加。

    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);
        }
    }
    

    【讨论】:

    • 我正在尝试使用最新的 API 来解决这个问题,但我正在为“getScopes()”而苦苦挣扎。谁能告诉我在哪里可以找到这个?或者它应该返回什么?谢谢。
    • @Will Calderwood 这个方法仍然有效,但是谷歌改变了他们的 GamesClient api。您可以将“yourtesteremail@gmail.com”用于电子邮件,将“oauth2:h ttps://www.googleapis.com/auth/games”用于范围(nospace)
    【解决方案2】:

    还有另一种方法可以实现这一目标。转到开发者网站游戏服务区域中的排行榜。然后选择你的排行榜之一。将订购选项“越大越好”更改为“越小越好”,反之亦然。保存后再改回来。

    这将清除您当前对该排行榜的所有值,当然这仅在测试时可行。

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2023-04-08
      • 2015-08-21
      • 2017-01-30
      • 1970-01-01
      • 2014-03-30
      相关资源
      最近更新 更多