masalah aplikasi wechat
Saya sudah lama mengetahui bahwa jebakan program mini sangat dalam. Setelah lebih dari sebulan berlatih, saya menemukan bahwa jebakan ini memang pantas...
Namun, program kecil yang dikembangkan diluncurkan sesuai jadwal, dan tetap patut dirayakan! ! ! Haha, catatlah poin-poin yang membuat Anda terdiam.
1. Kendala yang dihadapi dalam mengembangkan program mini WeChat
- 1. {{}} tidak bisa mengeksekusi metode dan hanya bisa menangani operasi sederhana seperti "+ - * /". Misalnya, saat melintasi daftar, jumlah setiap item perlu diformat sebelumnya js lalu setData Sekali (╯□╰)
- 2. Anda hanya dapat meneruskan, Anda hanya dapat meneruskan, Anda hanya dapat memperbarui tampilan melalui setData(), jebakan...
- 3. Kami menetapkan bahwa jalur halaman hanya boleh lima tingkat. Harap hindari interaksi multi-level.
- 4. Halaman A-->Halaman B, halaman B kembali ke A, cara memicu penyegaran A tanpa menaikkan level halaman. Solusi yang terlintas dalam pikiran untuk saat ini: tulis logika data inisialisasi A di acara pertunjukan di halaman A.
- 5.
undefinisi diperlakukan sebagai string if(xxx == "undefinisi") [Optimasi berulang di versi yang lebih baru] - 6. Saat menghadapi masalah aneh (seperti gaya, dll.), mulai ulang alat terlebih dahulu, dan alat tidak akan berfungsi setelah dicoba berulang kali.
- 7. Font web lokal tidak didukung (font online perlu digunakan). Setelah pengujian, ditemukan bahwa beberapa perangkat Android tidak dapat ditampilkan dengan benar. Setelah banyak masalah, saya menemukan bahwa server yang awalnya diperlukan untuk menyimpan font diperlukan untuk mendukung lintas domain. Sial, tidak ada kesalahan yang dilaporkan saat melakukan debug di ponsel. Saya hampir menyerah pada font web. Saya sudah lama terjebak, ini jebakan...
- 8. Jika sumber daya lokal tidak dapat diperoleh melalui CSS, Anda dapat menggunakan gambar jaringan, atau base64, atau menggunakan tag
<image/>
. - 9. Page.data tidak dapat dioperasikan secara langsung [Hindari menugaskan dan memodifikasi Page.data secara langsung, harap gunakan Page.setData untuk menyinkronkan data ke halaman untuk rendering]
- 10. Gunakan type="digit" untuk keyboard numerik
- 11. Apa yang terjadi jika Anda telah menggunakan https tetapi dilaporkan bahwa Anda tidak dapat membuat koneksi aman dengan server [Anda perlu mengkonfigurasi nginx untuk mengkonfigurasi standar enkripsi https ke tls1.2 dan yang lebih baru]
- 12. wx.setStorage(OBJECT) [Saat ini, setiap program mini dibatasi hingga 5 juta]
- 13. Pemantauan data [backend WeChat: jumlah kunjungan aktual/ikhtisar kemarin/jumlah kumulatif pengguna yang dikunjungi/halaman TOP yang dikunjungi]
- 14. Artefak debugging WeChat, ngrok, lihat ngrok
- 15. Tambahkan efek klik untuk melihat [perlu mengaktifkan efek hover]:
< view hover hover-class =" item-hover " >
- 16. Metode debugging otorisasi pengguna [Alat Pengembangan-》Hapus data otorisasi ponsel (Cache-Hapus data otorisasi ponsel)]
- 17. Saat program mini dimuat pertama kali di ponsel Android, di halaman beranda, metode onshow akan dimuat dua kali secara tidak dapat dijelaskan, tetapi tidak akan dimuat di iPhone karena perlu dipicu di onshow to memperoleh informasi pengguna, sistem akan memuat dua kali. Kesalahan dilaporkan di latar belakang. . .
- 18. Nonaktifkan tarik-turun halaman: Setel "disableScroll": true.
- 19. getAppConfig:fail akan muncul di Android dan userInfo tidak dapat diperoleh. Masalah WeChat, unduh paket instalasi WeChat terbaru
- 20. Latar belakang tidak dapat menerima data POST, tetapi dapat menerima parameter permintaan GET.
url: url,
data: data,
method: "POST",
dataType: "json",
header: {
'content-type': 'application/x-www-form-urlencoded' //==> 此处若为application/json则服务端无法获取POST的参数
}
- 21. Setelah pengguna menolak otorisasi saat program mini diluncurkan untuk pertama kalinya, kotak pop-up otorisasi tidak dapat muncul di lain waktu, dan pilihan pengguna terakhir akan diingat secara default. Belum ada solusi yang ditemukan, dan WeChat tidak memiliki analisis yang relevan. 【10-01-2017】 WeChat memperbarui API (wx.authorize(OBJECT)) untuk mendukung memunculkan kotak pop-up otorisasi【05-07-2017】
- 22. Untuk melompat ke halaman dengan tabbar, Anda harus menggunakan wx.switchTab(). Ini ditanyakan di berbagai grup hampir setiap hari! ! !
- 22. Saat mengikat pengembang/pengalaman, ingatlah untuk mengonfirmasi undangan di ponsel Anda. (Banyak orang bertanya)
- 23. Latar belakang WeChat telah memperbarui permintaan nama domain resmi. Anda dapat langsung membuka Alat Pengembangan WeChat-->Proyek-->Informasi Konfigurasi-->Segarkan, dan ini akan segera berlaku.
- 24. Program mini resmi tidak menyediakan contoh dekripsi informasi login versi Java. Anda dapat menggunakan demo dekripsi versi Java ini.
- 25. Saat menggunakan wx:for untuk melintasi, yang terbaik adalah menambahkan wx:key="{{item.id}}". Jika Anda mengetahui dengan jelas bahwa daftar tersebut statis, atau Anda tidak perlu memperhatikan urutannya , Anda dapat memilih untuk mengabaikannya. Namun, jika array yang dilintasi Perubahan dapat terjadi, yang dapat menyebabkan urutan data berubah.
- 26. Kenyamanan halaman pengembangan program mini adalah rpx, jadi disarankan menggunakan ukuran iPhone 6 untuk rancangan desain. Untuk tata letak fleksibel, silakan merujuk ke artikel ini
- 27. Applet WeChat akan memantau perubahan file secara default dan kemudian menyegarkan secara otomatis. Namun kekurangannya adalah modul ini di-refresh sepenuhnya setiap saat, bukan penggantian modul yang panas, yang akan mempengaruhi kecepatan pengembangan. Khusus untuk developer yang sering menyukai Command + S, Anda akan menemukan bahwa program mini Anda terus-menerus di-refresh. @MinJieLiu
- 28. Program mini WeChat telah mendukung komponen
web-view
sejak perpustakaan dasar 1.6.4
, yaitu program mini mendukung kemampuan untuk menyematkan halaman web ditampilkan di alat pengembang, tetapi pratinjau seluler dapat [ditingkatkan] Versi terbaru klien WeChat]. Penyebabnya adalah basic library yang digunakan tidak mendukung komponen web-view
, yang dapat diatasi dengan memilih basic library terbaru. sebagai berikut:
- 29. Komunikasi antara H5 dan program mini tidak didukung dan tidak dapat dikomunikasikan melalui penyimpanan lokal atau cara lain. Jika Anda benar-benar perlu membawa parameter, Anda dapat mencoba membawanya di url
web-view
, tetapi ini tidak disarankan dapat diotorisasi menggunakan akun resmi. Kemampuan terbuka tampilan web (halaman web perlu menyematkan jssdk): Antarmuka JSSDK didukung di halaman web: - 30. tampilan web saat ini tidak mendukung pembayaran WeChat.
- 31. Dalam program mini, bagian
catch
dari pernyataan try...catch
menggunakan throw
untuk memunculkan kesalahan, yang tidak dapat ditangkap oleh bagian luar try...catch
.
2. Konfigurasi terkait sebelum pengembangan program mini
- 1. Login--->Administrator memindai kode QR-->Pengaturan-->Pengaturan pengembangan-->Hasilkan AppSecrect
- 2. Login konfigurasi server--->Administrator memindai kode QR-->Pengaturan-->Pengaturan pengembangan-->Nama domain server-->Pindai kode QR
- 3. Ikat identitas pengguna pengembang-->Pengembang-->Hingga 10 pengembang kode QR
- 4. Ikat identitas pengguna yang mengalami-->Pengalaman-->Pindai kode QR ke 20 orang yang mengalami
3. Rilis program mini
Penerbitan hanya dapat dilakukan dengan akun administrator. Langkah-langkahnya adalah sebagai berikut:
- Keluar dari akun pengembang di alat pengembangan
- Administrator memindai kode QR untuk masuk ke alat pengembang, mengunggah-->mengatur latar belakang WeChat sebagai versi uji coba-->meninjau-->menerbitkan
Catatan: Waktu peninjauan bervariasi, 2-6 hari
4. Kumpulan alasan tidak lolos review
- 1. Pengenalan mini program tidak memperkenalkan fungsi mini program.
- 2. Kategori tidak sesuai dengan konten yang disediakan di halaman
- 3. Layanan dan konten yang disediakan oleh mini program harus bersifat formal dan tidak dapat dikirimkan sebagai konten tes atau dikirimkan sebagai konten tes berkali-kali.
- 4. Jika berisi konten audio dan video, harap tambahkan kategori terkait yang relevan.
- 5. Gambar dan teks di beranda saling tumpang tindih, jadi disarankan untuk mengoptimalkannya.
- 6. Kotak pencarian hanya dapat dipilih setelah beberapa klik. Tidak ada respon saat mengklik halaman komentar. Resolusi dan ukuran gambar halaman terdistorsi.
- 7. Beberapa gambar menunjukkan kompresi dan pemeriksaan fisik kurang baik.
- 8. Program mini dengan sistem akun harus mendukung login resmi WeChat selain metode loginnya sendiri.
- 9. Untuk layanan yang harus login untuk dapat digunakan, harap berikan akun percobaan
- 10. Ada perdagangan barang virtual secara online. Sistem iOS memerlukan IAP. Program mini tidak membayar untuk saat ini.
- 11. Isi inti halaman yang sesuai dengan kategori layanan program mini harus sesuai dengan kategori tersebut.
- 12. Harus dipastikan bahwa pengguna dapat menggunakan kategori layanan pada halaman ini dan tidak boleh menyembunyikan atau melakukan lompatan berulang kali.
- 13. Jangan menampilkan atau merekomendasikan mini program pihak ketiga. Contoh : Navigasi mini program, promosi link mini program, pemeringkatan mini program, dan lain-lain tidak dapat dilakukan.
- 14. Terdapat perilaku bujukan pada konten halaman mini program, antara lain bujukan untuk berbagi, bujukan untuk menambahkan, bujukan untuk mengikuti akun publik, bujukan untuk mengunduh, dan lain-lain. Program yang mengharuskan pengguna untuk berbagi, menambah, mengikuti atau unduh sebelum dapat dioperasikan, berisi program Mini yang mengungkapkan atau menyiratkan copywriting, gambar, tombol, overlay, jendela pop-up, dll. yang dibagikan pengguna, program mini yang mendorong pengguna untuk berbagi dan menyebarkan melalui godaan manfaat, program mini yang menggunakan kata-kata yang berlebihan untuk memaksa atau membujuk pengguna untuk berbagi, memaksa atau membujuk. Program mini apa pun yang ditambahkan oleh pengguna akan ditolak;
- 15. Melarang pemutaran otomatis multimedia seperti video, musik, dan suara.
- 16. Jika mini program memiliki sistem akun, harus menyediakan opsi "log out" akun yang dapat digunakan secara normal dan mudah ditemukan.
- 17. Konten program mini tidak boleh berisi perjudian, kuis, dan undian.
- 18. Konten tes tidak boleh ada di konten halaman mini program; contoh: ramalan, lotere, horoskop, dll.
Situasi penolakan yang umum terjadi pada platform program mini WeChat lainnya
5. Dokumentasi dan Komunitas
- 1.Dokumen resmi
- 2. Tanya Jawab Resmi
- 3. Komunitas resmi
- 4. Panduan akses program mini
- 5. Pertanyaan yang Sering Diajukan tentang Mini Program
6. kode
- 1. Enkapsulasi antarmuka permintaan inisiasi WeChat. Jika login gagal, permintaan login akan otomatis dimulai secara default.
/**
* 发起的是 HTTPS 请求
* @pram url: 请求地址,协议必须为https
* @pram data 请求参数请求参数
* @param success 请求成功回调
* @param fail 请求失败回调
* @param complete 请求完成(成功或者失败)回调
*/
function request ( url , data , success , fail , complete ) {
var _url = url ,
_data = data ,
_success = success ,
_fail = fail ,
_complete = complete ;
wx . request ( {
url : url ,
data : data ,
method : "POST" ,
dataType : "json" ,
header : {
'content-type' : 'application/x-www-form-urlencoded' ,
'Client-Agent' : getSystemInfo ( ) ,
'WX-SESSION-ID' : wx . getStorageSync ( constant [ 'WX-SESSION-ID' ] ) //每次请求带上登录标志
} ,
success : function ( res ) {
if ( res . data . code == "-9999" ) { //会话失效重新登录
requestLogin ( function ( ) {
constant [ 'NUM_TRY_LOGIN' ] ++ ;
//设置请求上限,防止重复提交并死循环
if ( constant [ 'NUM_TRY_LOGIN' ] < constant [ 'LIMIT_NUM_TRY_LOGIN' ] ) {
request ( _url , _data , _success , _fail , _complete ) ;
}
} ) ;
return ;
}
if ( res . data . code == "0" ) {
if ( typeof _success == "function" ) {
_success ( res . data ) ;
}
} else {
wx . showToast ( { title : res . data . msg , icon : 'loading' , duration : 2000 } ) ;
return ;
}
} ,
fail : function ( res ) {
if ( typeof _fail == "function" ) {
_fail ( res ) ;
}
if ( typeof _fail == "string" ) { //请求失败的弹框提示
wx . showToast ( { title : _fail , icon : 'loading' , duration : 2000 } ) ;
}
} ,
complete : function ( res ) {
if ( typeof _complete == "function" ) {
_complete ( res ) ;
}
}
} ) ;
}
/**
* 请求登录,获取用户相关信息
* @param callback
*/
function requestLogin ( callback ) {
var _callback = callback ;
wx . login ( {
success : function ( event ) {
// 获取到请求码,继续请求用户的基本信息
if ( event . code ) {
var code = event . code ;
wx . getUserInfo ( {
success : function ( res ) {
var data = {
code : code ,
encryptedData : res . encryptedData ,
iv : res . iv ,
signature : res . signature ,
rawData : res . rawData
}
var url = domain + "/wx_xxx" ; //请求登录地址
request ( url , data ,
function ( res ) { //success
if ( res . code == "0" ) {
//此处可以将服务端返回的登录状态保存起来
wx . setStorageSync ( constant [ 'WX-SESSION-ID' ] , res . object . sessionId ) ;
if ( typeof _callback == "function" ) {
_callback ( ) ;
}
}
} ,
function ( res ) { //fail
wx . showToast ( { title : '请求登录失败' , icon : 'loading' , duration : 2000 } ) ;
}
) ;
} ,
fail : function ( res ) {
//用户拒绝授权
if ( res . errMsg == "getUserInfo:cancel" || res . errMsg == "getUserInfo:fail auth deny" ) {
wx . redirectTo ( { //跳转至未授权页面
url : '../xxx-page/xxx-page'
} ) ;
}
}
} )
} else {
wx . showToast ( { title : '微信登录失败' , icon : 'loading' , duration : 2000 } ) ;
}
} ,
fail : function ( res ) {
wx . showToast ( { title : '微信登陆失败!' , icon : 'loading' , duration : 2000 } ) ;
}
} ) ;
}