2

我对 Android 开发和 Google App 引擎的东西很陌生。我仍在处理有关它的文档和教程。

我有一个 Android 游戏概念,基于 2 名玩家的回合制战斗,但回合非常短(< 20 秒)。据我所知,Google Cloud Endpoints 允许创建类似 REST 的 API。

应用程序有没有办法警告客户其他玩家已经玩过,并做出相应的反应?由于“小”计时器,预计不会在战斗期间离开应用程序。

到目前为止,我已经找到了 Channel API,但它不适用于 Android 客户端。

先感谢您 !

4

2 回答 2

1

适用于 Android 的 Google Cloud Messaging仅用于从服务器推送到 Android 客户端。您将需要带有有效负载的消息并在您的 Android 应用程序中处理它。

对于大量推送消息,您还应该考虑使用Socket API保持专用的实时连接

于 2014-07-24T03:48:57.487 回答
0

就个人而言,我建议使用 PubNub 库http://www.pubnub.com/docs/java/android/android-sdk.html,IHO 比 GCM 更强大。

当一个游戏由 x 个玩家创建时,每个玩家都会以编程方式订阅一个 pubnub 频道。

当玩家 X 在游戏中做某事时,该动作将立即发布在频道中,并且所有订阅该频道的玩家都会立即收到该动作的通知(在代码中),因此您可以采取该指示并显示通知等待的玩家轮到她了。

这是在客户端使用 Pubnub id 库的片段,以接收特定 chan 上的传入消息:

    public void Startpubnub(String channel) {
Toast.makeText(this, channelName+"TransportLine activated...", Toast.LENGTH_LONG).show();
Log.i("PUBNUB", channelName+"TransportLine activated...");
try {
    pubnub.subscribe(new String[] {channel}, new Callback() {
        public void connectCallback(String channel) {
            notifyUser("CONNECT on channel:" + channel);
        }
        public void disconnectCallback(String channel) {
            notifyUser("DISCONNECT on channel:" + channel);
        }
        public void reconnectCallback(String channel) {
            notifyUser("RECONNECT on channel:" + channel);
        }
        @Override
        public void successCallback(String channel, Object message) {
            Log.i("tag","broadcast is sent!");
            notifyUser(channel + " " + message.toString());
            Log.i("afterBroadcastisSent", message.toString());
            try {
                Message m = Message.obtain();
                Bundle b = new Bundle();
                b.putString("message", message.toString());
                m.setData(b);
                mMessageHandler.sendMessage(m);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        @Override
        public void errorCallback(String channel, Object message) {
            notifyUser(channel + " " + message.toString());
        }
    });
} catch (PubnubException e) {

}

然后在你的后端订阅那个chan,http : //www.pubnub.com/docs/java/javase/javase-sdk.html,https: //github.com/pubnub/python,然后发布一个味精回到基于传入消息的chan。

您甚至可以通过 PubNub 与 GCM 通信。

如果您计划支持设备,尤其是基于国际的设备,由于许可问题而没有安装 google play 服务,那么 PubNub 是终极快速和快速的实时推/拉机制。PubNub 本质上是上面@Ashish 描述的 Socket 通信,但在 Google 基础架构之外。

于 2014-07-28T01:24:33.047 回答