Google Play服务非多人邀请质询消息

时间:2014-07-16 01:57:48

标签: android libgdx google-play-services

我正在LibGDX中开发一款益智游戏,一旦你完成了一个谜题,你可以挑战一个朋友在同一个谜题中击败你的分数

这涉及向该朋友发送4个变量

intent.putExtra("PuzzleId", puzzle.puzzle_id.toString());
        intent.putExtra("ScoreCombined", score.combinedScore);
        intent.putExtra("ScoreHints", score.hintsUsed);
        intent.putExtra("ScoreDuration", score.puzzleCompletionTime);

所有我需要做的是通过谷歌播放服务提示用户,朋友已经挑战他们打败这个分数他们想要尝试它,如果他们这样做启动我的应用程序并加载该谜题甚至只提示用户当他们手动打开我的应用程序时?

有人能提出一个很好的方法来实现这个目标吗?

深层链接是一种更好的方法吗?这可能只适用于谷歌+页面更新或其他东西,然后他们必须单击链接

我目前正在尝试转向基于回合制的多人游戏方法,它允许我弹出朋友选择屏幕选择朋友构建意图添加我的变量

Intent intent = Games.TurnBasedMultiplayer.getSelectOpponentsIntent(gameHelper.getApiClient(), 1, 7, true);

        intent.putExtra("PuzzleId", puzzle.puzzle_id.toString());
        intent.putExtra("ScoreCombined", score.combinedScore);
        intent.putExtra("ScoreHints", score.hintsUsed);
        intent.putExtra("ScoreDuration", score.puzzleCompletionTime);

        startActivityForResult(intent, SELECT_PLAYERS);

这会成功弹出朋友选择屏幕,我可以选择多个人并点击开始游戏 问题1是当调用onActivityResult时,我的变量不再出现在intent中 使用此代码

Bundle extras = data.getExtras();
                Set keys = extras.keySet();
                Iterator iterate = keys.iterator();
                System.out.println("Intent Extras are");
                while (iterate.hasNext()) 
                {
                    String key = iterate.next().toString();
                    System.out.println("Extra key="+key + " value=" + extras.get(key).toString());
                }

我的变量没有通过

问题2现在我已经深入创建房间并开始匹配但我不需要任何这种复杂功能我只想发送带有这4个变量的邀请然后工作结束了用户可以是接受还是不接受必要的游戏

当试图真正开始这场比赛时,它会提示原来的煽动者开始转弯,这显然不起作用我需要被挑战的朋友获得第一个转弯,这样他们就可以杀死多人游戏会议并且只是找回我的四个变量

有没有更简单的方法来处理这个问题?使用游戏启动方法我可以获得所选用户的用户ID,如果需要我可以单独保存变量,但我不知道是否有方法只是向用户ID发送消息?如果那样可以完成相同的最终结果

1 个答案:

答案 0 :(得分:1)

似乎没有简单的方法通过谷歌播放服务进行沟通。 GCM和Turn或Normal游戏服务是我能找到的唯一选项,它们非常重要

我已经通过将数据存储在该意图之外来实现此功能,因为它没有传递数据

然后创建一个TurnBasedMatch并在那里设置数据,然后立即将其设置为对方玩家

我可以在其他Android设备上检测到这个游戏邀请,并通过将其作为字节数组嵌入来成功从匹配中提取数据

虽然我在完成游戏时还没有尝试过,但是我会将结果数据发送给发起人,结果是新转,然后显示并结束比赛

我不确定这个答案是否能帮助除了放弃所有希望的人之外的其他人