android - Google Play game services -- are unlocked achievements automatically shared through g+ or not? -


we're adding google play game services achievements our game (epic swords). we're in final testing, works except had expected unlocked achievements visible or posted in manner through g+. not see sharing occurring.

google's docs imply these shared, e.g. "sign in google share scores , achievements friends" http://goo.gl/v3y41 , various other places, although vague on how these shared.

q1: unlocked play services achievements automatically visible through g+?

q2: if yes, doing wrong in how testing these?

q3: if no... well, why implement achievements using play services instead of rolling our own? simpler , more reliable our own implementation (there's lot of complexity due synchronizing state google's cloud, not mention interesting bugs in client code ;-)

background: have published google play game services. works fine in-game, , state being shared/retrieved google. selected public visibility game progress when signing in game services.

btw add explicit g+ sharing when achievements unlock using general sharing api http://goo.gl/l70sy again... if have why use play services achievements @ all?

thanks ianhanniballake help, i'm adding clarify answer (e.g. achievements auto-posted) , summarize we've learned adding feature.

hopefully googler @ our pro/con because 1.0 sdk it's hard recommend api, improvements valuable.

automatic sharing of google play services achievement (as of 7/13 sdk):

  • achievement progress (e.g. unlock) not shared/visible through g+
  • the sdk not facilitate sharing achievements. plusshare.builder.shareunlock() if automatic sharing not added, share achievements on g+ must implement scratch
  • imo nothing prevents google adding automatic achievement sharing in future. sign in flow gets user permission share "game progress", , other posts leaderboards have social sharing

from our experience: pro/con of achievements google play services:

pro:

  • it's google's official solution defacto android standard
  • google could make achievement progress shared/visible through g+ if want. make more valuable

con:

  • user must willing sign g+ view/save achievements. users not , annoyed cannot use achievements
  • synchronizing client-server has complex policy , implementation issues. e.g. user may sign in after substantial game progress; may simultaneously play on multiple devices; may sign out , sign in different user mid-game
  • testing difficult because there's no way reset achievement progress test accounts through android api or server ui. assume google can fix this... please! posts remove/re-add tester account resets did not work us, or perhaps works pre-publishing
  • google's design intends server manages ui assets (icons, strings) , achievement policy. if achievements visible in g+ in future, until it's hassle. e.g. see code below
  • client ui ok not polished. e.g. description text area limited, "defeat skeleton king in battle" truncated in ui modes , there's no way see full detail. incremental achievements limited 10,000 steps (why?)

recommendation: if believe google make achievements visible through g+, that's great feature , explains of "con" above. if achievements remain unshared using google's api less reliable , substantially more work roll our own client implementation.

warning: google play game services of 7/15/13 appears have intermittent crashing bug if use imagemanager. see classcastexception: com.google.android.gms.common.images.e we have switched bundling unlock images in apk , no longer use imagemanager

this our now-deprecated code retrieve bitmap when user unlocks achievement:

    uri unlockeduri = achievement.getunlockedimageuri();     if (unlockeduri != null) {         imagemanager im = imagemanager.create(context);         // warning -- loadimage may silently skip call if called after achievement load         im.loadimage(new imagemanager.onimageloadedlistener() {             @override public void onimageloaded(uri arg0, drawable drawable) {                 // attempt convert drawable sharable image; if fails we'll post text                 bitmap bitmap = null;                 if (drawable instanceof bitmapdrawable) {                     bitmap = ((bitmapdrawable) drawable).getbitmap();                 } else {                     log.warn("not bitmapdrawable ", drawable);                 }                 listener.onbitmaploaded(bitmap);             }         }, unlockeduri);     } else {         log.debug("no unlockedimageuri");         listener.onbitmaploaded(null);     } 

one upside of google not providing automatic g+ sharing when have roll own sharing anyway, may other services in addition g+. e.g. offer sharing unlocked achievemets twitter well. perversely reason why google should make achievements social on g+ asap... developers lazy , ensure lots of games social achievements on g+ first ;-)


Comments