


Partagez plusieurs pièges dans le développement de jeux légers HTML5 sur WeChat
Feb 13, 2017 pm 01:06 PMPendant cette période, l'équipe a réalisé un peu de conception et de développement de produits sur WeChat, ce qui comprend bien s?r également certains travaux opérationnels. J'ai fait beaucoup de choses, y compris des micro-cartes de visite, des micro-récupérations de billets, des micro-activités, des micro-recrutements et d'autres petits cas.
Ce dont je veux parler aujourd'hui, c'est le jeu de lumière le plus actif auquel nous jouons dans WeChat : les prix à micro-rayures. Cette chose peut être utilisée pour gratter des livres, des billets, des colis, et est également utilisée par les clients Scratch. la facture de téléphone.
Prenez d'abord une photo pour avoir une idée de l'apparence spécifique?:
? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ?? ? ? ????Quelques écueils que Html5 WebApp doit surmonter?:
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; ????????????}Ceci La méthode de jugement en utilisant UserAgent semble être utilisée par de nombreuses personnes sur Internet. , mais il y a encore de nombreux pièges s'il n'est pas utilisé : 1. Problème de base : les machines IOS et Android grand public vont bien, mais quand il s'agit de Windows Phone, il sera directement Vous ne pouvez pas jouer après avoir sauté hors de WeChat. La raison en est que le UserAgent par défaut dans WeChat est MicroMessenger , qui n'existe pas dans la version WeChat de ces machines, donc afin de résoudre le problème du Windows Phone, nous avons ajouté le code suivant :
var?useragent?=?HttpContext.Current.Request.UserAgent.ToLower();???????????? if?(useragent.IndexOf("Windows?Phone".ToLower())?!=?-1) ????????????{???????????????? ????????????base.OnActionExecuting(filterContext);???????????????? ????????????return; ????????????}2. Question avancée?: Certains experts utilisent directement des outils plug-in pour forger le UserAgent de MicroMessenger, afin qu'en théorie il puisse être joué dans n'importe quel navigateur qui peut ouvrir des pages Web (grace à l'ami du groupe @阿(l'altruisme de Bao), pour résoudre ce problème, nous utilisons l'interface du SDK de WeChat : ce n'est que lorsque l'utilisateur l'utilise dans WeChat que l'opération d'initialisation et de scratch du contr?le est effectuée, sinon autre la navigation dans le terminal sera toujours en état de chargement.
dataForWeixin.callback?=?function?()?{????????????//一些初始化的操作 ????????}Concernant l'interface WeChat, merci de lire directement le texte original Je ne publierai pas le code directement ici, sinon il ne sera pas publié. . L'idée ci-dessus a fait beaucoup, mais il y a encore un bug très fatal dans nos règles commerciales qui n'a pas été résolu. Merci à @冰milkteachildren's shoes pour vos commentaires positifs. Ce bug est que tant que l'utilisateur efface manuellement les cookies et les informations mises en cache dans WeChat, puis réintègre l'événement, il peut gratter le prix un nombre illimité de fois. En théorie, il gagnera. le prix 100% du temps. En effet, mes règles servent de base pour juger si l'utilisateur actuel de WeChat a gratté le prix dans le cookie. Il semble qu'il n'y ait pas d'autre moyen. Nous voulons utiliser openid, mais notre compte d'abonnement WeChat ne peut pas obtenir openid si nous venons de Moments. Il y a toujours un problème d'appel. Afin de résoudre ce problème, nous avons finalement trouvé une idée, empruntant l'interface d'autorisation du compte du service WeChat. L'idée de base est la suivante : L'utilisateur entre dans la page chargement = ". Le programme appelle notre autre service WeChat L'interface d'autorisation du numéro, renvoie openid => Stocke l'openid dans le cookie (s'il n'existe pas ou expire, réexécutez les étapes précédentes) => Déterminez combien de fois l'activité en cours a a été extrait de la base de données sur la base de l'openid. Dans le même temps, ce processus déterminera automatiquement l'utilisateur s'il doit jouer à des jeux dans WeChat, sinon le rappel sera toujours en état de chargement. L'ensemble du processus est relativement fluide après son utilisation. Voici le code lié à l'autorisation?:
#region?微信授權(quán)??????? ?public?ActionResult?WeixinLogin(string?CurrentUrl) ????????{???????????? ????????string?url?=?WeixinOAuth2.Authorize(Server.UrlEncode(CurrentUrl));???????????? ????????return?RedirectPermanent(url); ????????}???????? ????????public?ActionResult?WeixinCallback() ????????{???????????? ????????if?(!string.IsNullOrEmpty(Request["code"])) ????????????{???????????????? ????????????//?獲取AccessToken參數(shù) ????????????????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"]));???????????????? ????????????????//重新跳轉(zhuǎn)到回調(diào)頁(yè)面,保持騰訊登錄相同風(fēng)格 ????????????????return?Redirect(url); ????????????}???????????? ????????????return?View(); ????????} ///?<summary> ????????///?授權(quán)請(qǐng)求頁(yè)面???????? ????????///?</summary> ????????///?<param name="flag">0為獲取微信基本信息?1為獲取微信openid接口</param> ????????///?<returns></returns> ????????public?static?string?Authorize(string?ReturnUrl) ????????{???????????? ????????string?url=string.Format("http://m.miracleart.cn/{0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect",?Weixin_AppKey,?Weixin_GetOpenIDCallback,?ReturnUrl);???????????? ????????return?url; ????????} #endregionà ce stade, il est fondamentalement possible de résoudre le problème de savoir comment déterminer l'unicité du courant utilisateur dans WeChat. Le seul risque de cette solution est la fluidité et la stabilité de l’interface de WeChat. Bien s?r, il existe de nombreux autres problèmes qui doivent être surmontés un par un pendant tout le processus de développement. Par exemple, la mise en ?uvre du rappel après le partage sur WeChat est utilisée par de nombreux amis. besoin de prendre en charge grps pour ce petit jeu. Il est impossible d'accéder à ces grands frameworks de jeu, comment faire cela, etc. Je prévois d'écrire quelques articles pour les partager plus tard, donc je vais d'abord me reposer. . Pour en savoir plus sur plusieurs pièges liés au développement de jeux légers HTML5 sur WeChat, veuillez prêter attention au site Web PHP chinois pour les articles connexes?!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)