現(xiàn)如今微信為各種移動(dòng)Web的小應(yīng)用提供了肥沃的土壤,于是乎形形色色的應(yīng)用孕育而出。人人都可以做開發(fā),但不是每個(gè)人都能開發(fā)出好的應(yīng)用,在開發(fā)過程中開發(fā)者會(huì)應(yīng)注意哪些“坑”呢?本文轉(zhuǎn)自深海的博客,他分享了在具體開發(fā)實(shí)現(xiàn)過程中基于微信的Html5 WebApp需要注意的細(xì)節(jié)以及如何用代碼實(shí)現(xiàn)。
全文如下:
不同于傳統(tǒng)的手游商店下載模式,HTML5 手機(jī)網(wǎng)頁(yè)游戲是可以直接運(yùn)行在微信內(nèi)置的瀏覽器里。
這段時(shí)間團(tuán)隊(duì)一直在做微信端的一些產(chǎn)品設(shè)計(jì)和開發(fā),當(dāng)然也包含一定的運(yùn)營(yíng)工作。做過的東西也不少,微名片、微搶票、微活動(dòng)、微招聘等一些小case。
今天想說的是我們?cè)谖⑿胖斜煌娴淖罨钴S的輕游戲--微刮獎(jiǎng),這東西可以被用來刮書、刮門票、刮套餐,還有客戶要用來刮電話費(fèi)。
先上圖,感知一下具體樣子:
而我想分享的是我們?cè)诰唧w開發(fā)實(shí)現(xiàn)過程中,基于微信的Html5 WebApp需要去克服的一些坑:這個(gè)小游戲的基本規(guī)則是:限定用戶每天刮書次數(shù)是2次 (自由刮一次和分享后再刮一次),每天都可刮獎(jiǎng)為此,我們希望實(shí)現(xiàn)的思路首先是限定在只能使用微信中玩,實(shí)現(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. 初級(jí)問題:iOS和主流Android機(jī)器沒問題,但碰到Windows Phone,就直接在微信中跳出去無法玩。原因是微信中默認(rèn)的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í)問題:有高人直接使用一些插件工具,偽造MicroMessenger的UserAgent,這樣理論上就可以在任何可以打開網(wǎng)頁(yè)的瀏覽器中玩了,解決此問題,我們利用的是微信的sdk中接口:僅當(dāng)用戶在微信中使用時(shí)執(zhí)行控件初始化刮獎(jiǎng)操作,否則其他終端瀏覽就會(huì)一直處于loading狀態(tài)。
dataForWeixin.callback = function () { //一些初始化的操作 }
關(guān)于微信的接口大家直接閱讀原文,這邊不直接貼代碼出來了,不然貼不下。
上面的思路做了很多事,但對(duì)我們的業(yè)務(wù)規(guī)則來說還有一個(gè)很致命的bug沒有解決。
這個(gè)bug就是只要用戶手動(dòng)清除微信中的cookie和緩存信息,然后重新進(jìn)入活動(dòng),就能無限次刮獎(jiǎng),理論上是百分百中獎(jiǎng)了。這是由于我的規(guī)則將判斷當(dāng)前微信用戶是否刮過獎(jiǎng)的判斷依據(jù)放在了cookie中,貌似除此以外也沒有其他辦法。想利用openid,但我們的微信訂閱號(hào),如果從朋友圈過來的話都無法獲取openid,還是依然存在上訴問題。
為了解決這個(gè)問題,最后我們終于找到了一條思路,借用微信服務(wù)號(hào)的授權(quán)接口,基本思路如下:
用戶進(jìn)入頁(yè)面loading=》程序調(diào)用我們另外一個(gè)微信服務(wù)號(hào)的授權(quán)接口,返回openid=》將openid存入cookie(若不存在或過期,則重新執(zhí)行前面步驟)=》根據(jù)openid從數(shù)據(jù)庫(kù)判斷本期活動(dòng)刮了幾次,同時(shí),這個(gè)過程會(huì)自動(dòng)判斷用戶是否在微信中玩游戲,否則回調(diào)將一直處于loading狀態(tài)。整個(gè)過程使用下來,還比較流暢。這邊貼一下授權(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)頁(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("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
至此,在微信中解決如何判斷當(dāng)前用戶的唯一性問題,基本上完全可以搞定。針對(duì)這套方案唯一存在的風(fēng)險(xiǎn)就是微信的接口的通暢性和穩(wěn)定性。
當(dāng)然,在整個(gè)開發(fā)過程中還有很多其他問題需要一一克服,比如,微信分享后回調(diào)的實(shí)現(xiàn),相應(yīng)很多朋友都要用,還比如這種小游戲我們甚至需要支持grps下流程訪問,不可能那些很大的游戲框架,這怎么搞等等問題,這些打算后面再慢慢寫些文章分享。
Atas ialah kandungan terperinci 微信開發(fā)H5輕游戲. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Jika Nvgpucomp64.dll menyebabkan permainan anda kerap ranap, penyelesaian yang disediakan di sini boleh membantu anda. Masalah ini biasanya disebabkan oleh pemacu kad grafik yang lapuk atau rosak, fail permainan yang rosak, dsb. Membetulkan isu ini boleh membantu anda menangani ranap permainan. Fail Nvgpucomp64.dll dikaitkan dengan kad grafik NVIDIA. Apabila fail ini ranap, permainan anda juga akan ranap. Ini biasanya berlaku dalam permainan seperti LordsoftheFallen, LiesofP, RocketLeague dan ApexLegends. Nvgpucomp64.dll ranap permainan pada Windows PC jika N

Permainan superpeople boleh dimuat turun melalui klien wap Saiz permainan ini ialah kira-kira 28G Ia biasanya mengambil masa satu setengah jam untuk memuat turun dan memasang Berikut ialah tutorial muat turun dan pemasangan khusus untuk anda. Kaedah baharu untuk memohon ujian tertutup global 1) Cari "SUPERPEOPLE" dalam kedai Steam (muat turun klien stim) 2) Klik "Minta akses kepada ujian tertutup SUPERPEOPLE" di bahagian bawah halaman kedai "SUPERPEOPLE" 3) Selepas mengklik butang minta butang akses, Permainan "SUPERPEOPLECBT" boleh disahkan dalam perpustakaan Steam 4) Klik butang pasang dalam "SUPERPEOPLECBT" dan muat turun

Optimumkan kadar bingkai permainan PlayerUnknown's Battlegrounds untuk meningkatkan kelancaran dan prestasi permainan Kaedah: Kemas kini pemacu kad grafik: Pastikan anda memasang pemacu kad grafik terkini pada komputer anda. Ini membantu mengoptimumkan prestasi permainan dan menyelesaikan masalah keserasian yang mungkin berlaku. Tetapan permainan yang lebih rendah: Laraskan tetapan grafik dalam permainan ke tahap yang lebih rendah, seperti mengurangkan peleraian, mengurangkan kesan khas dan bayang-bayang, dsb. Ini menghilangkan beban dari komputer anda dan meningkatkan kadar bingkai anda. Tutup program latar belakang yang tidak diperlukan: Semasa permainan sedang berjalan, tutup program dan proses latar belakang lain yang tidak diperlukan untuk mengosongkan sumber sistem dan meningkatkan prestasi permainan. Kosongkan ruang cakera keras: Pastikan cakera keras anda mempunyai ruang kosong yang mencukupi. Padam fail dan program yang tidak diperlukan, bersihkan fail sementara dan Tong Kitar Semula, dsb. Matikan penyegerakan menegak (V-Sync): dalam permainan

Menurut berita dari laman web ini pada 20 April, ASUS baru-baru ini mengeluarkan kemas kini BIOS, yang meningkatkan ketidakstabilan seperti ranap ketika menjalankan permainan pada pemproses generasi ke-13/14 Intel. Tapak ini sebelum ini melaporkan bahawa pemain melaporkan masalah termasuk apabila menjalankan versi demo PC permainan pertempuran Bandai Namco "Tekken 8", walaupun jika komputer mempunyai memori dan memori video yang mencukupi, sistem akan ranap dan menggesa mesej ralat yang menunjukkan memori tidak mencukupi. Isu ranap yang sama juga muncul dalam banyak permainan seperti "Battlefield 2042", "Remnant 2", "Fortnite", "Lord of the Fallen", "Hogwarts Legacy" dan "The Finals". RAD menerbitkan artikel panjang pada Februari tahun ini, menjelaskan bahawa masalah ranap permainan adalah gabungan tetapan BIOS, frekuensi jam tinggi dan penggunaan kuasa tinggi pemproses Intel.

Menurut berita dari laman web ini pada 22 Julai, media asing twistedvoxel menemui nama kod pembangunan PS5 yang dikhabarkan "Trinity" dan fail konfigurasi kualiti imej yang berkaitan dalam kod kemas kini "World Part 1" terbaru "No Man's Sky", yang membuktikan bahawa Sony adalah dijangka Model PS5Pro telah dilancarkan baru-baru ini. Walaupun "No Man's Sky" telah meningkatkan prestasi grafik permainan dalam kemas kini baru-baru ini, ramai pemain masih percaya bahawa ini mungkin HelloGames membuka jalan untuk model baharu lebih awal Menurut pratetap grafik terkini, di bawah resolusi dinamik permainan itu penskalaan telah ditingkatkan daripada 0.6 kepada 0.8, yang bermaksud permainan mempunyai resolusi purata yang lebih tinggi dan beberapa butiran grafik dinaik taraf daripada tahap "Tinggi" kepada "Ultra", tetapi sejak setiap permainan

1. Klik kanan pada ruang kosong pada bar tugas, kemudian cari Properties dan klik padanya. 2. Di sini anda boleh melihat bahawa tetapan lalai sistem bukan untuk menyembunyikan bar tugas secara automatik. 3. Klik untuk menyemak, kemudian OK untuk menyimpan perubahan. 4. Apabila kita kembali ke desktop kita, kita dapat melihat bahawa bar tugas tersembunyi secara automatik Jika kita menggerakkan kursor tetikus ke bawah, ia akan dipaparkan semula.

1. Klik pada [Privasi] dalam tetapan telefon. 2. Klik pilihan [Mikrofon]. 3. Hidupkan suis di sebelah kanan aplikasi permainan yang memerlukan kebenaran tetapan mikrofon.

H5referstohtml5, apivotaltechnologyinwebdevelopment.1) html5introducesnewelementsandapisforrich, dynamicwebapplications.2) itsupp ortsmultimediawithoutplugins, enhancusexperienceaceacrossdevices.3) SemantikelementsImproveContentstructureandseo.4) H5'srespo
