微信开发H5轻游戏
现如今微信为各种移动Web的小应用提供了肥沃的土壤,于是乎形形色色的应用孕育而出。人人都可以做开发,但不是每个人都能开发出好的应用,在开发过程中开发者会应注意哪些“坑”呢?本文转自深海的博客,他分享了在具体开发实现过程中基于微信的Html5 WebApp需要注意的细节以及如何用代码实现。
全文如下:
不同于传统的手游商店下载模式,HTML5 手机网页游戏是可以直接运行在微信内置的浏览器里。
这段时间团队一直在做微信端的一些产品设计和开发,当然也包含一定的运营工作。做过的东西也不少,微名片、微抢票、微活动、微招聘等一些小case。
今天想说的是我们在微信中被玩的最活跃的轻游戏--微刮奖,这东西可以被用来刮书、刮门票、刮套餐,还有客户要用来刮电话费。
先上图,感知一下具体样子:
而我想分享的是我们在具体开发实现过程中,基于微信的Html5 WebApp需要去克服的一些坑:这个小游戏的基本规则是:限定用户每天刮书次数是2次 (自由刮一次和分享后再刮一次),每天都可刮奖为此,我们希望实现的思路首先是限定在只能使用微信中玩,实现代码如下:
if (!HttpContext.Current.Request.Browser.IsMobileDevice) { var result = new RedirectResult("url", true); filterContext.Result = result; return; } if (string.IsNullOrEmpty(HttpContext.Current.Request.UserAgent)) { var result = new RedirectResult("url", true); filterContext.Result = result; return; } if (HttpContext.Current.Request.UserAgent.IndexOf("MicroMessenger") == -1) { var result = new RedirectResult("url", true); filterContext.Result = result; return; }
这招通过UserAgent的判断思路貌似网上大家也用的比较多,不用却依然存在挺多坑:
1. 初级问题:iOS和主流Android机器没问题,但碰到Windows Phone,就直接在微信中跳出去无法玩。原因是微信中默认的UserAgent是MicroMessenger,在这些机器的微信版本中不存在,所以为了解决Windows Phone,我们加入了如下代码:
var useragent = HttpContext.Current.Request.UserAgent.ToLower(); if (useragent.IndexOf("Windows Phone".ToLower()) != -1) { base.OnActionExecuting(filterContext); return; }
2. 高级问题:有高人直接使用一些插件工具,伪造MicroMessenger的UserAgent,这样理论上就可以在任何可以打开网页的浏览器中玩了,解决此问题,我们利用的是微信的sdk中接口:仅当用户在微信中使用时执行控件初始化刮奖操作,否则其他终端浏览就会一直处于loading状态。
dataForWeixin.callback = function () { //一些初始化的操作 }
关于微信的接口大家直接阅读原文,这边不直接贴代码出来了,不然贴不下。
上面的思路做了很多事,但对我们的业务规则来说还有一个很致命的bug没有解决。
这个bug就是只要用户手动清除微信中的cookie和缓存信息,然后重新进入活动,就能无限次刮奖,理论上是百分百中奖了。这是由于我的规则将判断当前微信用户是否刮过奖的判断依据放在了cookie中,貌似除此以外也没有其他办法。想利用openid,但我们的微信订阅号,如果从朋友圈过来的话都无法获取openid,还是依然存在上诉问题。
为了解决这个问题,最后我们终于找到了一条思路,借用微信服务号的授权接口,基本思路如下:
用户进入页面loading=》程序调用我们另外一个微信服务号的授权接口,返回openid=》将openid存入cookie(若不存在或过期,则重新执行前面步骤)=》根据openid从数据库判断本期活动刮了几次,同时,这个过程会自动判断用户是否在微信中玩游戏,否则回调将一直处于loading状态。整个过程使用下来,还比较流畅。这边贴一下授权相关的代码:
#region 微信授权 public ActionResult WeixinLogin(string CurrentUrl) { string url = WeixinOAuth2.Authorize(Server.UrlEncode(CurrentUrl)); return RedirectPermanent(url); } public ActionResult WeixinCallback() { if (!string.IsNullOrEmpty(Request["code"])) { // 获取AccessToken参数 var param = WeixinOAuth2.GetAccessToken(Request["code"]); string url = string.Format("{0}#access_token={1}&openid={2}&expires_in={3}&state={4}", ConfigHelper.GetValue("Weixin_Callback"), param.access_token,param.openid,param.expires_in, Server.UrlDecode(Request.QueryString["state"])); //重新跳转到回调页面,保持腾讯登录相同风格 return Redirect(url); } return View(); } /// <summary> /// 授权请求页面 /// </summary> /// <param name="flag">0为获取微信基本信息 1为获取微信openid接口</param> /// <returns></returns> public static string Authorize(string ReturnUrl) { string url=string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect", Weixin_AppKey, Weixin_GetOpenIDCallback, ReturnUrl); return url; } #endregion
至此,在微信中解决如何判断当前用户的唯一性问题,基本上完全可以搞定。针对这套方案唯一存在的风险就是微信的接口的通畅性和稳定性。
当然,在整个开发过程中还有很多其他问题需要一一克服,比如,微信分享后回调的实现,相应很多朋友都要用,还比如这种小游戏我们甚至需要支持grps下流程访问,不可能那些很大的游戏框架,这怎么搞等等问题,这些打算后面再慢慢写些文章分享。
以上是微信开发H5轻游戏的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在当下几乎所有游戏都在线的情况下,忽视家庭网络的优化是不可取的。几乎所有路由器都配备了NATBoost和QoS功能,旨在提升用户的游戏体验。本文将探讨NATBoost和QoS的定义、优势和劣势。NATBoost与游戏的Qos;哪个更好?NATBoost,又称网络地址转换Boost,是一种内置于路由器的功能,可提升其性能。对于游戏而言尤为重要,因为它有助于减少网络延迟,即游戏设备和服务器之间数据传输的时间。通过优化路由器内的数据处理方式,NATBoost实现了更快的数据处理速度和更低的延迟,从而改

如果Nvgpucomp64.dll导致游戏频繁崩溃,这里提供的解决方案可能会对您有所帮助。这种问题通常是由于过时或损坏的显卡驱动程序、游戏文件损坏等原因引起的。修复这些问题可以帮助您解决游戏崩溃的困扰。Nvgpucomp64.dll文件与NVIDIA显卡关联。当这个文件崩溃时,你的游戏也会崩溃。这通常发生在《LordsoftheFallen》、《LiesofP》、《RocketLeague》和《ApexLegends》等游戏中。Nvgpucomp64.dll使WindowsPC上的游戏崩溃如果N

在玩够3A大作以及手游的小伙伴们,是不是想重温一下儿时的电脑游戏呀?那我们一起在windows11中寻找蜘蛛纸牌吧!点击界面上的开始菜单,点击“所有应用”按钮;点击“所有应用”。找到并选择“MicrosoftSolitaireCollection”,这是微软的纸牌系列游戏应用;纸牌系列游戏选择。加载完成后,进入选择界面,找到“蜘蛛纸牌”;选择“蜘蛛纸牌”。虽然界面有些许变化,但还是以前的

本站2月23日消息,英伟达昨晚更新推出了NVIDIA应用程序,为玩家提供了全新的统一GPU控制中心,便于玩家通过游戏内悬浮窗提供的强大录像工具捕捉精彩时刻。在本次更新中,英伟达还引入了RTXHDR功能,本站附上官方介绍如下:RTXHDR是一款AI赋能的全新Freestyle滤镜,可以将高动态范围(HDR)的艳丽视觉效果无缝引入到原本不支持HDR的游戏中。你只需拥有兼容HDR的显示器,即可对大量基于DirectX和Vulkan的游戏使用此功能。玩家在启用RTXHDR功能之后,运行即便不支持HD

超级人类(superpeople)游戏可以通过steam客户端下载游戏,这款游戏的大小在28G左右,下载到安装通常需要一个半小时,下面为大家带来具体的下载安装教程!新的申请全球封闭测试方法1)在Steam商店(steam客户端下载)搜索“SUPERPEOPLE”2)点击“SUPERPEOPLE”商店页面下方的“请求SUPERPEOPLE封闭测试访问权限”3)点击请求访问权限按钮后,将在Steam库中可确认“SUPERPEOPLECBT”游戏4)在“SUPERPEOPLECBT”中点击安装按钮并下

本站4月20日消息,华硕公司近日发布了BIOS更新,改善了英特尔第13/14代处理器运行游戏时崩溃等不稳定情况。本站此前报道,玩家反馈的问题包括运行万代南梦宫格斗游戏《铁拳8》PC演示版时,即便电脑拥有充足的内存和显存,也会出现系统崩溃并提示内存不足的错误信息。类似的崩溃问题也出现在《战地风云2042》、《遗迹2》、《堡垒之夜》、《堕落之主》、《霍格沃茨之遗》以及《TheFinals》等多款游戏中。RAD公司今年2月发布长文,解释说游戏崩溃问题是BIOS设置、英特尔处理器的高时钟频率和高功耗共同

《使命召唤:幽灵》会一直停留在开始屏幕上、崩溃或冻结吗?许多玩家报告说,这款游戏在他们的设备上表现不佳。它在启动时一直显示空白的黑屏,或者在中间冻结或随机崩溃。这些问题在PC和Xbox游戏机上都有报告。如果你是受影响的用户之一,这篇文章将帮助你修复任务召唤:幽灵游戏中的性能问题。任务召唤:PC或Xbox上的幽灵卡在加载屏幕上、崩溃或冻结如果在加载屏幕上遇到卡顿或游戏持续冻结,以下解决方案可能有助于解决幽灵游戏的问题。确保您的主机或计算机符合CodGhost系统要求。重新启动您的控制台。在任务管理

小黑盒中可以购买各种游戏,那么买的游戏怎么入库steam呢?用户们需要在steam里的在Steam上激活产品,然后复制小黑盒里的激活码来激活,这篇买的游戏入库steam方法介绍就能够告诉大家具体的方法,下面就是详细的介绍,赶紧来看看吧!小黑盒买的游戏怎么入库steam答:在steam里的在Steam上激活产品来入库具体方法:1、首先点击steam上面的游戏按键。2、点击里面的在Steam上激活产品。3、之后点击出现窗口的下一步。4、在产品激活里粘贴小黑盒过购买的代码。5、之后点击下一步,就能够添
