Showing posts with label Google Play game services. Show all posts
Showing posts with label Google Play game services. Show all posts

Friday, December 16, 2016

Games authentication adopting Google Sign-In API


Posted by Clayton Wilkinson, Developer Platform Engineer



Some changes are coming to Play Game Services in early 2017:


Changes to Google API Client building



In November, we announced an href="https://developers.googleblog.com/2016/11/moving-to-google-sign-in-for-a-better-user-experience-and-higher-conversion-rates.html">update
to Google Sign-In API. Play Game Services is being updated to use Google
Sign-In API for authentication. The advantages are:


  • Games and Sign-In in same client connection.
  • Single API for getting Auth code to send to backend servers.


This change unifies the Google Sign-in and the Games API Sign-in, so there are
updates to how to build the Google API Client:



class="prettyprint">// Defaults to Games Lite scope, no server component
GoogleSignInOptions gso = new
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN).build();

// OR for apps with a server component
GoogleSignInOptions gso = new
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestServerAuthCode(SERVER_CLIENT_ID)
.build();

// OR for developers who need real user Identity
GoogleSignInOptions gso = new
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestEmail()
.build();

// Build the api client.
mApiClient = new GoogleApiClient.Builder(this)
.addApi(Games.API)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addConnectionCallbacks(this)
.build();
}

@Override
public void onConnected(Bundle connectionHint) {
if (mApiClient.hasConnectedApi(Games.API)) {
Auth.GoogleSignInApi.silentSignIn(mApiClient).setResultCallback(
new ResultCallback() {
@Override
public void onResult(GoogleSignInResult googleSignInResult) {
// In this case, we are sure the result is a success.
GoogleSignInAccount acct =
googleSignInResult.getGoogleSignInAccount());

// For Games with a server, send the auth code to your server.
String serverAuthCode = signInAccount.getServerAuthCode();

// Use the API client as normal.
Player player = Games.API.getCurrentPlayer(mApiClient);
}
}
);
} else {
onSignedOut();
}
}

Account creation within iOS is no longer supported



  • Currently, there is no support for new players to create a Play Games
    account on iOS. Additionally, the Google+ integration has been removed from
    iOS. As a result "social" APIs will return result codes indicating success, but
    return empty lists. This includes the "standard" UIs for leaderboards and
    multiplayer invitations.

Google+ is no longer integrated



  • href="http://android-developers.blogspot.com/2016/01/play-games-permissions-are-changing-in.html">Announced
    last year, Games is decoupled from Google+ during this transition. As a
    result the public APIs for getting connected players via circles stopped
    working, but the standard UIs for multiplayer invitations and social
    leaderboards continued to work. Starting from February 2017, the standard UIs
    will also not display the Social graph results as Google+ data becomes
    inaccessible. This will affect multiplayer games, social leaderboards, and
    gifts API on Android. The effect will be that these APIs will return
    successfully, but with an empty list of players.


List of APIs that are deprecated by removing Google+ integration (and their C++
equivalents):


  1. href="https://developers.google.com/android/reference/com/google/android/gms/games/Players.html?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog#getPlayerSearchIntent(com.google.android.gms.common.api.GoogleApiClient)">Games.Players.getPlayerSearchIntent()
  2. href="https://developers.google.com/android/reference/com/google/android/gms/games/Players.html?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog#loadConnectedPlayers(com.google.android.gms.common.api.GoogleApiClient,%20boolean)">Games.Players.loadConnectedPlayers()
  3. href="https://developers.google.com/android/reference/com/google/android/gms/games/Players.html?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog#loadInvitablePlayers(com.google.android.gms.common.api.GoogleApiClient,%20int,%20boolean)">Games.Players.loadInvitablePlayers()
  4. The value href="https://developers.google.com/android/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog#COLLECTION_SOCIAL">LeaderboardVariant.COLLECTION_SOCIAL
  5. href="https://developers.google.com/android/reference/com/google/android/gms/games/multiplayer/Invitations.html?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog#loadInvitations(com.google.android.gms.common.api.GoogleApiClient,%20int)">Invitations.loadInvitations()
  6. href="https://developers.google.com/android/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.html?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog#getSelectOpponentsIntent(com.google.android.gms.common.api.GoogleApiClient,%20int,%20int,%20boolean)">RealtimeMultiplayer.getSelectOpponentsIntent()
  7. href="https://developers.google.com/android/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.html?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog#getSelectOpponentsIntent(com.google.android.gms.common.api.GoogleApiClient,%20int,%20int,%20boolean)">TurnBasedMultiplayer.getSelectOpponentsIntent()
  8. All methods in the href="https://developers.google.com/android/reference/com/google/android/gms/games/request/GameRequest?utm_campaign=product area_discussion_games_121616&utm_source=anddev&utm_medium=blog">Requests
    package.


We realize this is a large change, but moving forward Play Game Services are
much better aligned with the rest of the Mobile platform from Google and will
lead to better developer experience for Android game developers.

Wednesday, November 23, 2016

Your next growth market: Realizing the potential of MENA


Posted by Mohammad El-Saadi, BD, Google Play



We know that many developers want to take advantage of growth opportunities in
new regions, but are held back by not knowing the most important areas to focus
on. That's why we wanted to share stories from our partners in the Middle East
and North Africa (MENA). It's a fast growing region for Google Play, and one
that already represents a sizable revenue opportunity. They've shared their
experiences, and some key things to focus on if you're thinking of launching in
the region.



Middle East and North Africa overview













MENA is a diverse region in terms of disposable income, access to connectivity,
and smartphone penetration. However, it is possible to broadly group MENA into
two types of market:



Growth markets


  • Examples: Saudi Arabia, United Arab Emirates (UAE), Kuwait and the rest of
    the Gulf Cooperation Council (GCC).
  • Very high smartphone penetration (on par with top western european markets),
  • Large disposable income
  • Robust growth in spend on mobile apps and games


Emerging markets


  • Examples: Morocco, Egypt and Iraq.
  • Large populations
  • Significant growth in smartphone (primarily Android) adoption.


Opportunities



Localization



If you want to be successful in MENA, localization is key. In Saudi Arabia 19 of
the top 20 grossing apps & games have their Google Play Store listing localized
and the majority of those have their actual app/game localized as well. By
localizing to Arabic, mobile app and game developers have found great success in
the region.



When Singapore-based href="https://play.google.com/store/apps/details?id=com.wego.android">Wego.com
localized to Arabic, they achieved over 200% YoY growth in
MENA
, grew their app rating from 3.5 to over 4.5 among Arab travelers
and increased Arab users' retention rates by 200%. Today, MENA represents over
65% of their users.



To do localization well, here are a few things to consider:


  • Localize your store listing into Arabic including your video, screenshots
    and text. If you are targeting specific countries within MENA consider using
    local dialects, otherwise use formal Arabic. Consider using Store Listing
    Experiments to optimize your listing for local audiences.
  • If applicable, flip your app/game UI to be right-to-left.
  • Beware of common issues when localizing to Arabic: Arabic letters appearing
    disjointed or showing up in reverse order and the ordering of words getting
    mixed up when sentences contain both Latin and Arabic words
  • Localize pricing by showing appropriate local currency and rounding. Note
    that different countries in MENA have different currencies and
    affordability/willingness to pay.
  • Plan around major local events such as the holy month of Ramadan, when after
    fasting from dawn to sunset, families and loved ones gather for meals, laughs
    and stories. We've found that during this month usage of apps and games
    increases significantly in MENA.
  • Provide local customer support
  • Be culturally sensitive in your communication and content - avoid
    stereotypes and keep in mind the relatively conservative nature of users in the
    region
  • Leverage the power of YouTube to reach your audiences in MENA. Saudi Arabia
    for instance is the second largest market for YouTube globally in terms of views
    per capita.


Refer to our href="https://developer.android.com/distribute/tools/localization-checklist.html?utm_campaign=android_discussion_mena_112116&utm_source=anddev&utm_medium=blog">Localization
Checklist for some best practices when localizing for any language.



Gaming



Gaming is a high growth and revenue opportunity in MENA. Most countries in the
region have a median age of 30 or lower, smartphone growth will continue to grow
at double digits, which makes gaming a key segment for users in the region.
Today's local top grossing charts and dominated by Midcore strategy games.
Interestingly, GCC countries have some of the highest Average Revenue Per Paying
User rates globally.



International titles, including Clash of Clans, Clash Royale, Mobile Strike and
Clash of Kings, have performed incredibly well in the region. In addition,
titles specifically targeting MENA have also seen tremendous success. href="https://play.google.com/store/apps/dev?id=7006382305291329295">Revenge of
the Sultans, by ONEMT, from China, has been the top grossing title across
several MENA countries for many months. Similarly, when IGG.com launched the
Arabic version of Castle Clash, they grew revenue from MENA by
58%
within 4 months.



As the market evolves, there is also a huge opportunity for other genres (such
as RPG, FPS, and sports) which are not present at scale in the region yet.



Google Play in MENA



We continue to invest in making sure that users are able to pay for their
favorite apps and games by launching locally relevant payment methods in MENA.
Today, we have carrier billing available with the major networks in Saudi
Arabia, UAE and Kuwait. We plan to expand coverage in more countries, including
Qatar and Bahrain, in the future.




We are also committed to increasing the quality and availability of Arabic apps
and games for MENA users, which is why we launched our href="https://play.google.com/store/recommended?sp=CAEwAFovCilwcm9tb3Rpb25fMzAwMjUxMl9BcHBzX01FTkFfTm93X0luX0FyYWJpYxAHGAM%3D:S:ANO1ljLJ7kY&c=apps">Now
in Arabic href="https://play.google.com/store/recommended?sp=CAEwAFovCilwcm9tb3Rpb25fMzAwMjUxMl9BcHBzX01FTkFfTm93X0luX0FyYWJpYxAHGAM%3D:S:ANO1ljLJ7kY&c=apps">cohref="https://play.google.com/store/recommended?sp=CAEwAFovCilwcm9tb3Rpb25fMzAwMjUxMl9BcHBzX01FTkFfTm93X0luX0FyYWJpYxAHGAM%3D:S:ANO1ljLJ7kY&c=apps">llhref="https://play.google.com/store/recommended?sp=CAEwAFovCilwcm9tb3Rpb25fMzAwMjUxMl9BcHBzX01FTkFfTm93X0luX0FyYWJpYxAHGAM%3D:S:ANO1ljLJ7kY&c=apps">echref="https://play.google.com/store/recommended?sp=CAEwAFovCilwcm9tb3Rpb25fMzAwMjUxMl9BcHBzX01FTkFfTm93X0luX0FyYWJpYxAHGAM%3D:S:ANO1ljLJ7kY&c=apps">tihref="https://play.google.com/store/recommended?sp=CAEwAFovCilwcm9tb3Rpb25fMzAwMjUxMl9BcHBzX01FTkFfTm93X0luX0FyYWJpYxAHGAM%3D:S:ANO1ljLJ7kY&c=apps">onhref="https://play.google.com/store/recommended?sp=CAEwAFovCilwcm9tb3Rpb25fMzAwMjUxMl9BcHBzX01FTkFfTm93X0luX0FyYWJpYxAHGAM%3D:S:ANO1ljLJ7kY&c=apps">
featuring apps and games that have recently localized to Arabic. This
collection will be regularly updated. If you're interested in being included, href="https://docs.google.com/a/google.com/forms/d/e/1FAIpQLSfuqUnnrY4a9XUsKlqrfow_7v9p1jMX_ae7DLnshk30pqOVZQ/viewform">submit
your localized app/game.