google play 游戏服务 BaseGameUtils 中没有 getApiClient()

Posted

技术标签:

【中文标题】google play 游戏服务 BaseGameUtils 中没有 getApiClient()【英文标题】:No getApiClient() in google play game services BaseGameUtils 【发布时间】:2014-03-14 22:18:39 【问题描述】:

我刚刚在我的游戏中添加了 google play services 排行榜,但是出现了一些问题。我无法开始排行榜活动。这是我的代码

startActivityForResult(Games.Leaderboards.getLeaderboardIntent(getApiClient(), "leaderboard_id"), 5000);

问题是没有任何 getApiClient() 方法。有什么想法吗?

【问题讨论】:

【参考方案1】:

您必须使用 GoogleApiClient 类型的对象。你的代码应该是这样的:

public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener
        GoogleApiClient mGoogleClient;
        ...

        @Override
        protected void onCreate(final Bundle savedInstanceState) 
            ...
            //Google Game 
            mGoogleClient = new GoogleApiClient.Builder(this, this, this)
           .addApi(Games.API)
           .addScope(Games.SCOPE_GAMES)
           .setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL)
           .build();

        

        @Override
        public void onStart()
            super.onStart();
            //Here is a good place to connect with Google Api
            mGoogleClient.connect();
        

        @Override
        public void onConnected(Bundle connectionHint) 

        @Override
        public void onConnectionSuspended(int cause) 

        @Override
        public void onConnectionFailed(ConnectionResult connectionResult) 


【讨论】:

【参考方案2】:

Games APIs doc指向android Samples项目中BaseGameUtils库中的这个方法以及getApiClientBuilder()等类似方法:

“如果您的游戏想要向 BaseGameActivity 管理的 GoogleApiClient 添加其他 Google Play 服务 API 或范围,它可以通过在 BaseGameUtils 中调用 GameHelper 对象上的 getApiClientBuilder() 来实现”。

我还没有在BaseGameUtils on github 中看到这些方法,我猜它们会在某个时候更新。

更新:看起来 BaseGameUtils 中的 GameHelper 更新是 on its way。

【讨论】:

【参考方案3】:

如果您的主要活动扩展了 BaseGameActivity 之类的 - 公共类 MainActivity 扩展 BaseGameActivity

然后您可以在该活动中的任何位置使用 getApiClient()。

但是,如果您想从另一个活动(或非活动类)访问 getApiClient(),请执行此操作-

公共类 MainActivity 扩展 BaseGameActivity

static GoogleApiClient myclient;

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myclient=getApiClient();
 

...

那么你只需要调用“MainActivity.myclient” 而不是来自其他类的“getApiClient()”。

【讨论】:

以上是关于google play 游戏服务 BaseGameUtils 中没有 getApiClient()的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 游戏服务:编写保存的游戏

Google Play 游戏服务 - 无法登录游戏中心

Android Google Play 游戏服务回合制多人游戏不自动匹配

java - Google Play 游戏服务

Android 模拟器上的 Google Play 服务和 Google Play 游戏应用

Google Play 游戏服务实时多人游戏停止工作