国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 微信小程式 微信開發(fā) 微信開發(fā)H5輕遊戲

微信開發(fā)H5輕遊戲

May 11, 2017 pm 01:06 PM

現(xiàn)如今微信為各種行動Web的小應(yīng)用提供了肥沃的土壤,於是乎形形色色的應(yīng)用孕育而出。人人都可以做開發(fā),但不是每個人都能開發(fā)出好的應(yīng)用,在開發(fā)過程中開發(fā)者會要注意哪些「坑」呢?本文轉(zhuǎn)自深海的博客,他分享了在具體開發(fā)實現(xiàn)過程中基於微信的Html5 WebApp需要注意的細(xì)節(jié)以及如何用程式碼實現(xiàn)。

  全文如下:

  不同於傳統(tǒng)的手遊商店下載模式,HTML5 手機(jī)網(wǎng)頁遊戲是可以直接運行在微信內(nèi)建的瀏覽器裡。

  這段時間團(tuán)隊一直在做微信端的一些產(chǎn)品設(shè)計和開發(fā),當(dāng)然也包含一定的營運工作。做過的東西也不少,微名片、微搶票、微活動、微招募等一些小case。

  今天想說的是我們在微信中被玩的最活躍的輕遊戲--微刮獎,這東西可以被用來刮書、刮門票、刮套餐,還有客戶要用來刮電話費。

  先上圖,感知一下具體樣子:

微信開發(fā)H5輕遊戲

而我想分享的是我們在具體開發(fā)實作過程中,基於微信的Html5 WebApp需要去克服的一些坑:這個小遊戲的基本規(guī)則是:限定用戶每天刮書次數(shù)是2次(自由刮一次和分享後再刮一次),每天都可刮獎為此,我們希望實現(xiàn)的思路首先是限定只能用微信玩,實作程式碼如下:

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的判斷思維貌似網(wǎng)路上大家也用的比較多,不用卻依然存在挺多坑:

  1. 初級問題:iOS和主流Android機(jī)器沒問題,但碰到Windows Phone,就直接在微信中跳出去無法玩。原因是微信中預(yù)設(shè)的UserAgent是MicroMessenger,在這些機(jī)器的微信版本中不存在,所以為了解決Windows Phone,我們加入瞭如下程式碼:

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

 2. 進(jìn)階問題:有高人直接使用一些插件工具,偽造MicroMessenger的UserAgent,這樣理論上就可以在任何可以打開網(wǎng)頁的瀏覽器中玩了,解決此問題,我們利用的是微信的sdk中接口:僅當(dāng)用戶在微信中使用時執(zhí)行控件初始化刮獎操作,否則其他終端瀏覽就會一直處於loading狀態(tài)。

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

關(guān)於微信的介面大家直接閱讀原文,這邊不直接貼程式碼出來了,不然貼不下。

  上面的思路做了很多事,但對我們的業(yè)務(wù)規(guī)則來說還有一個很致命的bug沒有解決。

  這個bug就是只要用戶手動清除微信中的cookie和緩存信息,然後重新進(jìn)入活動,就能無限次刮獎,理論上是百分百中獎了。這是由於我的規(guī)則將判斷當(dāng)前微信用戶是否刮過獎的判斷依據(jù)放在了cookie中,貌似除此以外也沒有其他辦法。想利用openid,但我們的微信訂閱號,如果從朋友圈過來的話都無法取得openid,還是依然存在上訴問題。

  為了解決這個問題,最後我們終於找到了一條思路,借用微信服務(wù)號的授權(quán)接口,基本思路如下:

  用戶進(jìn)入頁面loading=》程序調(diào)用我們另外一個微信服務(wù)號的授權(quán)接口,返回openid=》將openid存入cookie(若不存在或過期,則重新執(zhí)行前面步驟)=》根據(jù)openid從資料庫判斷本期活動刮了幾次,同時,這個過程會自動判斷用戶是否在微信中玩遊戲,否則回呼將一直處於loading狀態(tài)。整個過程使用下來,還比較流暢。這邊貼一下授權(quán)相關(guān)的程式碼:

#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)頁面,保持騰訊登錄相同風(fēng)格
                return Redirect(url);
            }
            return View();
        }
    /// <summary>
        /// 授權(quán)請求頁面
        /// </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

至此,在微信中解決如何判斷目前使用者的唯一性問題,基本上完全可以搞定。針對這套方案唯一存在的風(fēng)險就是微信的介面的通暢性和穩(wěn)定性。

  當(dāng)然,在整個開發(fā)過程中還有很多其他問題需要一一克服,比如,微信分享後回調(diào)的實現(xiàn),相應(yīng)很多朋友都要用,還比如這種小遊戲我們甚至需要支持grps下流程訪問,不可能那些很大的遊戲框架,這怎麼搞等等問題,這些打算後面再慢慢寫些文章分享。

以上是微信開發(fā)H5輕遊戲的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
Nvgpucomp64.dll導(dǎo)致Windows PC遊戲崩潰; Nvgpucomp64.dll導(dǎo)致Windows PC遊戲崩潰; Mar 26, 2024 am 08:20 AM

如果Nvgpucomp64.dll導(dǎo)致遊戲經(jīng)常崩潰,這裡提供的解決方案可能會對您有所幫助。這種問題通常是由於過時或損壞的顯示卡驅(qū)動程式、遊戲檔案損壞等原因引起的。修復(fù)這些問題可以幫助您解決遊戲崩潰的困擾。 Nvgpucomp64.dll檔案與NVIDIA顯示卡關(guān)聯(lián)。當(dāng)這個檔案崩潰時,你的遊戲也會崩潰。這通常發(fā)生在《LordsoftheFallen》、《LiesofP》、《RocketLeague》和《ApexLegends》等遊戲中。 Nvgpucomp64.dll使WindowsPC上的遊戲崩潰如果N

超級人類(superpeople)遊戲下載安裝方法介紹 超級人類(superpeople)遊戲下載安裝方法介紹 Mar 30, 2024 pm 04:01 PM

超級人類(superpeople)遊戲可以透過steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個半小時??,以下為大家?guī)砭唧w的下載安裝教學(xué)!新的申請全球封閉測試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點擊“SUPERPEOPLE”商店頁面下方的“請求SUPERPEOPLE封閉測試訪問權(quán)限”3)點擊請求訪問權(quán)限按鈕後,將在Steam庫中可確認(rèn)「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點選安裝按鈕並下

絕地求生FPS最佳化設(shè)定,吃雞PUBG遊戲幀率最佳化 絕地求生FPS最佳化設(shè)定,吃雞PUBG遊戲幀率最佳化 Jun 19, 2024 am 10:35 AM

絕地求生遊戲幀率優(yōu)化,提升遊戲的流暢度和效能方法:更新顯示卡驅(qū)動程式:確保您的電腦上安裝了最新的顯示卡驅(qū)動程式。這有助於優(yōu)化遊戲效能並修復(fù)可能存在的兼容性問題。降低遊戲設(shè)定:將遊戲中的圖形設(shè)定調(diào)整為較低的水平,例如降低解析度、減少特效和陰影等。這會減輕計算機(jī)的負(fù)擔(dān)並提高幀率。關(guān)閉不必要的後臺程式:在遊戲運行時,關(guān)閉其他不必要的後臺程式和進(jìn)程,以釋放系統(tǒng)資源並提高遊戲效能。清理硬碟空間:確保您的硬碟有足夠的可用空間。刪除不需要的文件和程序,清理臨時文件和回收站等。關(guān)閉垂直同步(V-Sync):在遊戲

華碩發(fā)表 BIOS 更新,提升英特爾第 13/14 代處理器遊戲穩(wěn)定性 華碩發(fā)表 BIOS 更新,提升英特爾第 13/14 代處理器遊戲穩(wěn)定性 Apr 20, 2024 pm 05:01 PM

本站4月20日消息,華碩公司近日發(fā)布了BIOS更新,改善了英特爾第13/14代處理器運行遊戲時崩潰等不穩(wěn)定情況。本站先前報導(dǎo),玩家回饋的問題包括運行萬代南夢宮格鬥遊戲《鐵拳8》PC演示版時,即便電腦擁有充足的記憶體和顯存,也會出現(xiàn)系統(tǒng)崩潰並提示記憶體不足的錯誤訊息。類似的崩潰問題也出現(xiàn)在《戰(zhàn)地風(fēng)雲(yún)2042》、《遺跡2》、《要塞英雄》、《墮落之主》、《霍格華茲之遺》以及《TheFinals》等多款遊戲中。 RAD公司今年2月發(fā)布長文,解釋遊戲崩潰問題是BIOS設(shè)定、英特爾處理器的高時脈頻率和高功耗共同

為 PS5 Pro 鋪路,《無人深空》更新代碼「驚現(xiàn)」遊戲機(jī)開發(fā)代號「Trinity」及畫質(zhì)設(shè)定檔 為 PS5 Pro 鋪路,《無人深空》更新代碼「驚現(xiàn)」遊戲機(jī)開發(fā)代號「Trinity」及畫質(zhì)設(shè)定檔 Jul 22, 2024 pm 01:10 PM

本站7月22日消息,外媒twistedvoxel在《無人深空》最新的「世界第一部分」更新代碼中發(fā)現(xiàn)了傳聞中PS5的開發(fā)代號「Trinity」及相關(guān)畫質(zhì)配置文件,佐證了索尼有望近期推出PS5Pro機(jī)種。雖然《無人深空》在近期的更新中已為遊戲加強(qiáng)了畫質(zhì)表現(xiàn),但仍有不少玩家認(rèn)為這可能是HelloGames為新機(jī)型所提前鋪路,根據(jù)最新的圖形預(yù)設(shè),在PS5Pro下這款遊戲的動態(tài)解析度縮放從0.6增加到0.8,這代表遊戲平均解析度更高,一些圖形細(xì)節(jié)從「High」級別升級到「Ultra」級別,不過由於每款遊戲

WIN10玩遊戲工作列怎麼一直顯示_WIN10玩遊戲工作列一直顯示的處理操作步驟 WIN10玩遊戲工作列怎麼一直顯示_WIN10玩遊戲工作列一直顯示的處理操作步驟 Mar 28, 2024 am 08:36 AM

1.滑鼠右鍵點選任務(wù)列的空白處,然後找到屬性,點選它。 2.在這可以看到系統(tǒng)預(yù)設(shè)設(shè)定是沒有勾選自動隱藏工作列的。 3、點選勾選,然後確定,儲存變更。 4.再回到我們的桌面就能看到工作列被自動隱藏了,把滑鼠遊標(biāo)移到最下面的話,又會顯示出來。

蘋果手機(jī)遊戲麥克風(fēng)權(quán)限開啟方法講解 蘋果手機(jī)遊戲麥克風(fēng)權(quán)限開啟方法講解 Mar 22, 2024 pm 05:56 PM

1.在手機(jī)設(shè)定中點選進(jìn)入【隱私權(quán)】。 2.點選【麥克風(fēng)】選項。 3.將需要設(shè)定麥克風(fēng)權(quán)限的遊戲應(yīng)用程式右側(cè)開關(guān)開啟。

H5指的是什麼?探索上下文 H5指的是什麼?探索上下文 Apr 12, 2025 am 12:03 AM

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

See all articles