【问题标题】:Increment achievement by achievement in android在android中按成就增加成就
【发布时间】:2015-05-11 03:37:40
【问题描述】:

我的场景:假设我有 3 个成就。我增加 1 成就,完成后我想增加 2 成就,依此类推。

1) 我如何在成就之间切换并继续增量

2) 有没有办法获得我必须增加的成就

3) 有没有办法改变“Games.Achievements.getAchievementsIntent”视图的外观?

4) 如果我想在特定成就后启用应用内购买,我该怎么做?

谢谢

【问题讨论】:

    标签: android google-play


    【解决方案1】:

    要做到这一切,你必须创建一个函数,它接受一个参数,如下所示:

     public boolean unlockAchievement(int whichAchievement)
    
       {
        switch(whichAchievement)
    {
     case 1:
    
            achievementId = mainActivity.getString(R.string.achievement_id_1);
            achievementCause = mainActivity
                    .getString(R.string.achievement_cause_1);
            break;
        case 2:
            achievementId = mainActivity.getString(R.string.achievement_id_2);
            achievementCause = mainActivity
                    .getString(R.string.achievement_cause_2);
    //Enable inapp purchase here
            break;
      }
    
        AchievementsClient acClient = mainActivity.agsClient
                .getAchievementsClient();
        AGResponseHandle<UpdateProgressResponse> handle = acClient
                .updateProgress(achievementId, 100.0f);
    
        // Optional callback to receive notification of success/failure.
        handle.setCallback(new AGResponseCallback<UpdateProgressResponse>() {
    
            @Override
            public void onComplete(UpdateProgressResponse result) {
                if (result.isError()) {
                    // Toast.makeText(mainActivity,
                    // "Something is wrong and achievement is not unlocked",
                    // Toast.LENGTH_LONG).show();
                } else {
                    // Toast.makeText(mainActivity,
                    // "Achievement unlocked successfully",
                    // Toast.LENGTH_LONG).show();
                }
            }
        });
    

    每当您解锁成就时调用此函数。宾果游戏!

    【讨论】:

    • 感谢您的回答,如果我启用这样的应用内购买,将成就 ID 存储在资源文件中是否明智。这不会是一个安全问题,因为用户可以访问资源文件。
    • 不,将所有此类信息存储在 res/strings 中始终是一种好习惯。
    • 如果您通过单击勾选按钮解决了问题,则可以将答案标记为正确:)
    • 感谢您的意见。但我已经在上面列出了对我有用的答案。
    【解决方案2】:

    首次加载成就使用
    Games.Achievements.load(见Google Play Game Services get achievements list

    其次,遍历所有成就并查看所有增量成就和最高解锁成就。然后决定接下来要增加哪个增量成就 (achievementId)。

    最后,使用此代码在解锁成就时重新加载成就。

    Games.Achievements.incrementImmediate(mGoogleApiClient, achivementId, 1)
                    .setResultCallback(new ResultCallback<Achievements.UpdateAchievementResult>() {
    
                        @Override
                        public void onResult(Achievements.UpdateAchievementResult result) {
                            switch (result.getStatus().getStatusCode()) {
                                case GamesStatusCodes.STATUS_ACHIEVEMENT_UNLOCKED:
                              loadAchievements(); // load achivments and decide which one to increment next
                                     break;
                                case GamesStatusCodes.STATUS_ACHIEVEMENT_UNKNOWN:
                                    // the achievement failed to update because could not find the achievement to update.
                                    break;
                                case GamesStatusCodes.STATUS_ACHIEVEMENT_NOT_INCREMENTAL:
                                    // achievement failed to increment since it is not an incremental achievement.
                                    break;
                                case GamesStatusCodes.STATUS_ACHIEVEMENT_UNLOCK_FAILURE:
                                    // the call to unlock achievement failed.
                                    break;
                            }
                        }
    
                    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多