按 android 中的成就增加成就
Increment achievement by achievement in android
我的情景:假设我有 3 个成就。我增加 1-achievement,完成后我想增加 2-achievement,依此类推。
1) 如何在成就之间切换并继续增加
2) 有没有办法获得我必须增加的成就
3) 有没有办法改变 'Games.Achievements.getAchievementsIntent' 视图的外观?
4) 如果我想在特定成就后启用应用内购买,我该怎么做?
谢谢
要完成所有这些,您必须创建一个函数,它接受一个参数,如下所示:
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();
}
}
});
每当您解锁成就时调用此函数。宾果!
首次加载成就使用
Games.Achievements.load(参见 Google Play Game Services get achievements list)
其次,遍历所有成就,查看所有增量成就和最高解锁成就。然后决定接下来要增加哪个增量成就(achivementId)。
最后,解锁成就后使用此代码重新加载成就。
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;
}
}
});
我的情景:假设我有 3 个成就。我增加 1-achievement,完成后我想增加 2-achievement,依此类推。
1) 如何在成就之间切换并继续增加
2) 有没有办法获得我必须增加的成就
3) 有没有办法改变 'Games.Achievements.getAchievementsIntent' 视图的外观?
4) 如果我想在特定成就后启用应用内购买,我该怎么做?
谢谢
要完成所有这些,您必须创建一个函数,它接受一个参数,如下所示:
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();
}
}
});
每当您解锁成就时调用此函数。宾果!
首次加载成就使用
Games.Achievements.load(参见 Google Play Game Services get achievements list)
其次,遍历所有成就,查看所有增量成就和最高解锁成就。然后决定接下来要增加哪个增量成就(achivementId)。
最后,解锁成就后使用此代码重新加载成就。
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;
}
}
});