android and ios achievements.

This commit is contained in:
Bryce Covert
2018-01-04 21:54:21 -08:00
parent c4e4a14be3
commit e95d6c4be1
24 changed files with 379 additions and 24 deletions

View File

@@ -0,0 +1,88 @@
package advent.core;
import clojure.lang.RT;
import clojure.lang.Symbol;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.backends.android.AndroidApplication;
import android.support.annotation.NonNull;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.assets.AssetManager;
import com.google.android.gms.games.*;
import com.google.android.gms.auth.api.signin.*;
import android.app.Activity;
import android.content.Intent;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
public class GooglePlay {
static GoogleSignInAccount mAccount;
public void signIn(Activity act) {
GoogleSignInClient signInClient = GoogleSignIn.getClient(act, GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
Intent intent = signInClient.getSignInIntent();
act.startActivityForResult(intent, 14562);
}
public void signInSilently(Activity act) {
GoogleSignInClient signInClient = GoogleSignIn.getClient(act, GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN);
System.out.println("trying silent sign in");
signInClient.silentSignIn().addOnCompleteListener(act,
new OnCompleteListener<GoogleSignInAccount>() {
@Override
public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
if (task.isSuccessful()) {
System.out.println("silent sign in succeeded.");
signedIn(task.getResult());
} else {
}
}
});
}
public static void signedIn(GoogleSignInAccount acct) {
mAccount = acct;
}
public void showAchievements(final Activity act) {
if (mAccount != null) {
com.google.android.gms.games.Games.getAchievementsClient(act, mAccount).getAchievementsIntent()
.addOnSuccessListener(new OnSuccessListener<Intent>() {
@Override
public void onSuccess(Intent intent) {
System.out.println("SUCCESS");
act.startActivityForResult(intent, 0);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
System.out.println("FAIL");
System.out.println(e.toString());
}
});
} else {
signIn(act);
}
}
public void setAchievement(Activity act, String a) {
System.out.println("TRYING TO UNLOCK");
System.out.println(a);
if (mAccount != null) {
System.out.println(mAccount.toString());
com.google.android.gms.games.Games.getAchievementsClient(act, mAccount).unlock(a);
}
}
}

View File

@@ -16,7 +16,16 @@ import com.android.billingclient.api.BillingClient.SkuType;
import com.android.billingclient.api.SkuDetails.SkuDetailsResult;
import com.android.billingclient.api.BillingFlowParams;
import com.android.billingclient.api.BillingFlowParams.Builder;
import android.content.Intent;
import com.google.android.gms.common.api.ApiException;
import android.content.pm.*;
import com.google.android.gms.games.*;
import com.google.android.gms.auth.api.signin.*;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import android.app.AlertDialog;
public class MainActivity extends AndroidApplication {
public boolean triggerPurchase() {
@@ -25,6 +34,43 @@ public class MainActivity extends AndroidApplication {
int returnValue = mBillingClient.launchBillingFlow(this, builder.build());
return returnValue == BillingClient.BillingResponse.OK || returnValue == BillingClient.BillingResponse.ITEM_ALREADY_OWNED;
}
@Override
protected void onResume() {
super.onResume();
// Since the state of the signed in user can change when the activity is not active
// it is recommended to try and sign in silently from when the app resumes.
new GooglePlay().signInSilently(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == 14562) {
System.out.println("LOGIN RESULT");
Task<GoogleSignInAccount> task =
GoogleSignIn.getSignedInAccountFromIntent(intent);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
System.out.println("GOT ACCOUNT");
System.out.println(account.toString());
GooglePlay.signedIn(account);
new GooglePlay().showAchievements(this);
} catch (ApiException apiException) {
System.out.println("NOT GOT ACCOUNT");
System.out.println(apiException.toString());
new AlertDialog.Builder(this)
.setMessage("Could not sign in to Google Play")
.setNeutralButton("Ok", null)
.show();
}
}
}
private BillingClient mBillingClient;