构建一个多人 iOS 游戏,玩家可以在其中相互竞争。游戏的本质是同步的。基本上,玩家要么通过 facebook、电子邮件等相互邀请,然后开始游戏。
我们讨论什么是促进玩家之间实时通信(发送事件等)的最佳策略。来自网络开发,我们使用了 cometd 和长轮询,效果很好。但是,目前尚不清楚在 iOS 上实现该目标的最佳方式是什么。
APN(Apple Push Notifications)似乎不适合我们的情况,原因有二:据我们了解,延迟可能非常严重,最多可达几秒。此外,使用 APN 需要用户授权通知。如果用户不授权,则无法玩游戏。
此外,我们了解 Apple 的 Game Kit(Game Center)在我们的案例中可能很有值(value),但尚不清楚它如何与通过 facebook 等发出的邀请进行交互。此外,不清楚我们是否需要使用 Apple 的 Game Center 和它将如何影响用户体验。
对于此事的任何指导以及您可能想到的其他选项,我们将不胜感激。
感谢您的帮助。
最佳答案
在您阅读其余部分之前,先声明一下:我在 Realtime.co 工作,但我相信我可以在这里提供帮助,所以我并不是要“推销”。
如果您需要实时更新,可以查看实时 (www.realtime.co)。它基本上是一组工具,供开发人员在他们的项目中使用实时技术。它使用 websockets,但如果您使用的是浏览器(这不是您的情况,但总是很高兴知道),它会回退到用户浏览器支持的任何内容(例如长轮询)。
在 Realtime 背后,您有一个一对一/一对多/多对多的消息传递系统,可以将您的消息传送给您的用户或从您的用户那里传送消息。
还有一个 iOS API,您可以在您的项目中使用它。您可以在这里下载:http://www.xrtml.org/downloads_62.html#ios并在此处查看文档:http://docs.xrtml.org/getting_started/hello_message.html#ios .
还有一个优点是 Realtime 框架实际上是跨平台的。这意味着如果您决定将游戏扩展到其他平台,您甚至可以让您的 iOS 玩家与使用 Android、Windows Phone、HTML5、Flash 等的玩家进行交流。
希望对您有所帮助!
关于ios - iOS 上多人游戏的实时消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588737/
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=
我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
如果我在模型中设置验证消息validates:name,:presence=>{:message=>'Thenamecantbeblank.'}我如何让该消息显示在闪光警报中,这是我迄今为止尝试过的方法defcreate@message=Message.new(params[:message])if@message.valid?ContactMailer.send_mail(@message).deliverredirect_to(root_path,:notice=>"Thanksforyourmessage,Iwillbeintouchsoon")elseflash[:error]