android and ios achievements.
This commit is contained in:
88
android/src/java/advent/core/GooglePlay.java
Normal file
88
android/src/java/advent/core/GooglePlay.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user