찾다
위챗 애플릿위챗 개발WeChat에서 Html5 라이트 게임을 개발할 때의 몇 가지 함정을 공유하세요

이 기간 동안 팀은 WeChat에서 일부 제품 디자인 및 개발을 수행해 왔으며 여기에는 물론 특정 운영 작업도 포함됩니다. 저는 소액 명함, 소액 티켓 수령, 소액 활동, 소액 모집 및 기타 소소한 사건을 포함하여 많은 일을 해왔습니다.

오늘 제가 이야기하고 싶은 것은 위챗에서 가장 활발한 라이트 게임인 마이크로 스크래치 경품입니다. 책, 티켓, 패키지를 긁을 수 있고 고객도 스크래치를 사용할 수 있습니다. 전화요금.

먼저 사진을 찍어서 구체적인 모습을 느껴보세요.

分享微信开发Html5轻游戏中的几个坑                                                                                 Html5 WebApp이 극복해야 할 몇 가지 함정: 分享微信开发Html5轻游戏中的几个坑

이 미니 게임의 기본 규칙 사용자는 하루에 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의 경우 WeChat을 직접 사용하면 됩니다. 뛰어내린 후 재생할 수 없습니다. . 그 이유는 WeChat의 기본 UserAgent가 MicroMessenger

이기 때문입니다. 이는 이러한 시스템의 WeChat 버전에는 존재하지 않으므로 Windows Phone의 문제를 해결하기 위해 다음 코드를 추가했습니다.

      var useragent = HttpContext.Current.Request.UserAgent.ToLower();            
      if (useragent.IndexOf("Windows Phone".ToLower()) != -1)
            {                
            base.OnActionExecuting(filterContext);                
            return;
            }

2. 고급 질문: 일부 전문가는 일부 플러그인 도구를 직접 사용하여 MicroMessenger의 UserAgent를 위조하므로 이론적으로는 가능한 모든 브라우저에서 재생할 수 있습니다. 웹 페이지를 엽니다(그룹 친구 @Abao's Selfless 덕분에). 이 문제를 해결하기 위해 우리는 WeChat SDK의 인터페이스를 사용합니다. 사용자가 WeChat에서 이를 사용할 때만 컨트롤 초기화 및 스크래치 작업이 수행됩니다. 그렇지 않으면 다른 터미널 탐색이 수행됩니다. 항상 로딩 상태에 있어야 합니다.

    dataForWeixin.callback = function () {            //一些初始化的操作
        }

WeChat의 인터페이스에 대해서는 원본 텍스트를 직접 읽어보시기 바랍니다. 여기에는 코드가 직접 게시되지 않습니다.

위의 아이디어로 많은 성과를 거두었지만 여전히 해결되지 않은 비즈니스 규칙에는 매우 치명적인 버그가 있습니다. 긍정적인 피드백을 주신 @冰milkteachildren의 신발에 감사드립니다.

이 버그는 사용자가 WeChat에서 쿠키와 캐시된 정보를 수동으로 삭제한 후 이벤트에 다시 입장하는 한 이론적으로 상금을 무제한으로 긁을 수 있다는 것입니다. 100% 상금을 받습니다. 이는 현재 위챗 사용자가 쿠키에 경품을 긁었는지 여부를 판단하는 기준을 내 규칙에 두었기 때문입니다. openid를 사용하고 싶지만 Moments에서 온 경우 WeChat 구독 계정은 openid를 얻을 수 없습니다. 여전히 항소 문제가 있습니다.

이 문제를 해결하기 위해 마침내 WeChat 서비스 계정의 인증 인터페이스를 빌려 아이디어를 찾았습니다. 기본 아이디어는 다음과 같습니다.

사용자가 페이지 로딩 = " 프로그램은 계정 번호의 다른 WeChat 서비스 승인 인터페이스를 호출하고 openid를 반환합니다 => openid를 쿠키에 저장합니다(존재하지 않거나 만료된 경우 이전 단계를 다시 실행합니다) => 이 활동이 쿠키에서 몇 번이나 스크랩되었는지 확인합니다. openid를 기반으로 하는 데이터베이스. 동시에 이 프로세스는 사용자가 WeChat에서 게임을 플레이할지 여부를 자동으로 결정합니다. 그렇지 않으면 콜백은 항상 로딩 상태에 있습니다. 사용 후 전체 과정은 비교적 원활합니다. 인증 관련 코드는 다음과 같습니다.

    #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>0为获取微信基本信息 1为获取微信openid接口
        /// <returns></returns>
        public static string Authorize(string ReturnUrl)
        {            
        string url=string.Format("http://www.php.cn/{0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect", Weixin_AppKey, Weixin_GetOpenIDCallback, ReturnUrl);            
        return url;
        }  
    #endregion

이 시점에서 WeChat에서 현재 사용자의 고유성을 어떻게 확인하는지에 대한 문제는 기본적으로 해결될 수 있습니다. 이 솔루션의 유일한 위험은 WeChat 인터페이스의 부드러움과 안정성입니다.

물론, 전체 개발 과정에서 하나씩 극복해야 할 문제가 많이 있습니다. 예를 들어 WeChat에서 공유한 후 콜백을 구현하는 것은 많은 친구들이 사용합니다. 이 작은 게임에는 grps를 지원해야 합니다. 이러한 대규모 게임 프레임워크에 액세스하는 것은 불가능합니다. 이를 수행하는 방법 등은 나중에 공유하기 위해 몇 가지 기사를 작성할 계획이므로 오늘은 먼저 휴식을 취하겠습니다. .

WeChat에서 Html5 라이트 게임을 개발할 때 발생할 수 있는 몇 가지 함정에 대해 더 자세히 공유하려면 PHP 중국어 웹사이트의 관련 기사에 주목하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.