Saya menerima permintaan nirkabel dua hari yang lalu. Sebagai pemula, saya telah sibuk selama beberapa hari... Ada tautan di halaman. Jika pengguna telah menginstal APLIKASI, klik untuk membuka APLIKASI yang sesuai tidak menginstalnya, klik untuk membuka APLIKASI yang sesuai. Menyiapkan koneksi. Saya mencari secara online dan pada dasarnya mengatakan itu dapat dicapai, tetapi situasi sebenarnya tidak optimis.
Tentu saja itu hanya salah satu syaratnya.Saat ini juga terdapat berbagai macam aplikasi.Pada halaman H5 yang dibagikan biasanya terdapat tombol untuk segera dibuka.Jika aplikasi tersebut diinstal secara lokal, maka aplikasi lokal tersebut akan langsung dipanggil belum diinstal, lalu Lompat untuk mengunduh. Ini adalah strategi yang sangat normal untuk promosi dan pengalihan lalu lintas. Baru-baru ini, manajer produk telah mengajukan permintaan seperti itu, membuat bilah unduhan dengan aplikasi terbuka seperti fungsi Toutiao, dll., dan saya tidak akan membicarakan sisanya!
Sekarang mari kita ke topik utama hari ini, bagaimana cara H5 membuka atau mengaktifkan aplikasi lokal di ponsel? Melihat jawaban di Baidu dan Google, hanya ada dua jenis:
Cara pertama:Dengan langsung mengkonfigurasi skema pada sisi Android di href pada tag tag HTML, tentunya jika ada konfigurasi host lainnya ikuti saja Konfigurasi dan kode sisi Androidnya adalah sebagai berikut:
konfigurasi sisi Android:
<aktivitas android:nama = .MainActivity> <intent-filter> <aksi android:nama = android.intent.action.MAIN /> <kategori android:nama = android.intent.category.LAUNCHER /> </intent-filter> <intent-filter> <aksi android:nama=android.intent.action.VIEW/> <kategori android:name=android.intent.category.DEFAULT/> <kategori android:name=android.intent.category.BROWSABLE/> <data android:host=jingewenku.com android:scheme=abraham/> </intent-filter> </aktivitas>
Catatan: Jika ini dikonfigurasi pada halaman awal, itu harus ditempatkan berdampingan dengan label, jika tidak, tidak akan ada ikon aplikasi seluler setelah dijalankan, perhatikan bahwa protokol skema harus menggunakan huruf kecil, jika tidak maka akan ada pengecualian itu tidak bisa merespons!
kode html:
<html> <head> <meta http-equiv=Jenis Konten content=text/html; charset=UTF-8> <title>Masukkan judul di sini</title> </head> <body> <a href=abraham: //jingewenku.com/?pid=1>Buka aplikasi</a><br/> </body></html>
Di sini kita melihat format protokol penyambungan skema:
< a href=[scheme]://[host]/[path]?[query]>Mulai aplikasi</a>
Arti dari masing-masing item adalah sebagai berikut:
skema: mengidentifikasi Aplikasi yang dimulai. ※Detail dijelaskan nanti
tuan rumah: deskripsi yang sesuai
jalur: kunci yang diperlukan saat meneruskan nilai ※Tidak apa-apa jika tidak tersedia
query: Dapatkan Kunci dan Nilai dari nilai tersebut ※Tidak apa-apa jika Anda tidak memilikinya
Cara di atas bisa digunakan untuk membuka aplikasi lokal, tentunya jika aplikasi tersebut ada, jika tidak maka tidak akan ada respon.
Anda mungkin bertanya, bukankah protokol skema yang dikonfigurasi di Android dikonfigurasikan dalam kode HTML di atas? Saya jelas tidak mengkonfigurasi pid, mengapa saya harus menulis ini? Ini karena terkadang saat kita memanggil aplikasi lokal, kita mungkin meneruskan beberapa parameter ke aplikasi. Kita dapat mengonfigurasi parameter ini di sini. Kita hanya perlu memasukkannya ke dalam oncreate.
Maksud niat = getIntent(); Uri uri = niat.getData(); jika (uri != null) { String pid = uri.getQueryParameter(pid }
Jika Anda masih ingin mengonfigurasi protokol skema di Android, Anda juga dapat melakukan ini:
Uri uri = getIntent().getData();if(uri != null) { // Informasi url lengkap String url = uri.toString(); Log.e(TAG, url: + uri); skema = uri.getScheme(); Log.e(TAG, skema: + skema); // bagian host String host = uri.getHost(); host); //bagian port int port = uri.getPort(); Log.e(TAG, host: + port); //Jalur akses String path = uri.getPath(); path); Daftar<String> pathSegments = uri.getPathSegments(); // Bagian kueri String query = uri.getQuery(); //Dapatkan nilai parameter yang ditentukan String goodId = uri.getQueryParameter(goodsId); Log.e(TAG, goodId: + goodId);}
Cara menentukan apakah suatu Skema valid:
PackageManager packageManager = getPackageManager();Intent maksud = newIntent(Intent.ACTION_VIEW, Uri.parse(abraham://jingewenku.com:8888/goodsDetail?goodsId=10011002));Daftar<ResolveInfo> aktivitas = packageManager.queryIntentActivities(intent, 0);booleanisValid = !activities.isEmpty();if(isValid) { startActivity(niat);}
Metode ini juga yang paling populer di Baidu, tetapi menimbulkan masalah. Persyaratan di atas adalah memiliki koneksi di halaman. Jika pengguna menginstal APLIKASI, klik untuk membuka APLIKASI yang sesuai; diinstal, klik untuk membuka koneksi pengaturan yang sesuai. Ini jelas tidak memenuhi persyaratan dan hanya dapat digunakan untuk beberapa kebutuhan individu.
Cara kedua:Karena tidak mungkin mengonfigurasi protokol skema di href, itu hanya dapat dicapai melalui kode js. Hanya dengan cara ini aplikasi dapat dibuka berdasarkan penilaian ketika tersedia, dan melompat ke tautan unduhan untuk mengunduh ketika tidak.
Kita tahu bahwa js tidak dapat menentukan apakah aplikasi tertentu diinstal di ponsel, jadi kita hanya bisa menyelamatkan negara melalui kurva. Kita bisa mengetahui waktunya. Jika aplikasi tidak dapat dipanggil untuk waktu yang lama, aplikasi tersebut akan default tidak diinstal, lalu lompat ke Halaman unduh. Tentu saja, ini bukanlah apa yang saya pikirkan, ini adalah apa yang dipikirkan oleh orang-orang besar di Internet. Di sini kita harus membaginya menjadi dua situasi.
1. Bangun langsung
Catatan: Anda dapat mengubah aplikasi melalui h5. Misalnya, kunjungi URL, klik tombol, dan buka aplikasi. Jika aplikasi APP tidak diinstal, langsung buka halaman download APP di App Store lebih baik dengan mengklik. Jika diinstal Dengan aplikasi, itu dapat dibangunkan di browser seluler utama (browser 360, browser uc, browser Sogou, browser QQ, browser Baidu) dan klien QQ. WeChat, klien Sina Weibo, dan klien Tencent Weibo tidak dapat dibangunkan.
Kodenya adalah sebagai berikut:
<html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><head><script src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script><title>Klik untuk mengaktifkan demo</title></head><body><style>#zjmobliestart {font -size:40px;}</style><!--Deskripsi: Anda dapat mengubah aplikasi melalui h5. Misalnya, mengakses URL, klik tombol, dan membuka aplikasi. melompat langsung ke Aplikasi. Halaman unduh APLIKASI Store, dengan mengklik. Kompatibilitasnya bagus. Jika aplikasi diinstal, aplikasi ini dapat dibangunkan di semua browser seluler utama (browser 360, browser uc, browser Sogou, browser QQ, browser Baidu) dan klien QQ. WeChat, klien Sina Weibo, dan klien Tencent Weibo tidak dapat dibangunkan. --><a href=zjmobile://platformapi/startapp id=zjmobliestart target=_blank>Bangunkan Balai Bisnis Seluler Zhejiang! </a><script type=teks/javascript> function applink(){ return function(){ var clickedAt = +tanggal baru; setTimeout(function(){ !window.document.webkitHidden && setTimeout(function(){ if ( +Tanggal baru - diklik pada < 2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; } } }, 500) }; .getElementById(zjmobliestart).onclick = applink(); </script> </body></html>
2. Klik untuk membangunkan
Catatan: Anda dapat membangunkan aplikasi melalui h5. Jika Anda mengunjungi URL, Anda dapat langsung membuka aplikasi tersebut. Jika aplikasi APP tidak diinstal, lalu langsung ke halaman download APP di App Store. Kompatibilitas umum: Dapat diaktifkan di browser ponsel utama (browser 360, browser uc, browser Sogou, browser QQ, dan browser Baidu). WeChat, klien QQ, klien Sina Weibo, dan klien Tencent Weibo tidak dapat dibangunkan.
Kodenya adalah sebagai berikut:
<!Doctype html><html xmlns=http://www.w3.org/1999/xhtml><head><meta http-equiv=Content-Type content=text/html;charset=utf-8><head> <skrip src=http://libs.baidu.com/jquery/1.9.0/jquery.js></script><title>Bangunkan demo secara langsung</title></head><body><style>#zjmobliestart{ font -size:40px;}</style><!--Deskripsi: Anda dapat membangunkan aplikasi melalui h5. Jika Anda mengunjungi URL, Anda dapat langsung membuka aplikasi. Jika aplikasi APP tidak diinstal, langsung lompat ke Aplikasi. Halaman pengunduhan APLIKASI di Store memiliki kompatibilitas umum: dapat dibangunkan di semua browser seluler utama (browser 360, browser uc, browser Sogou, browser QQ, browser Baidu). Klien WeChat QQ, klien Sina Weibo, klien Tencent Weibo tidak dapat dibangunkan. --><p id=zjmobliestart>Bangunkan Balai Bisnis Seluler Zhejiang Mobile! </p><script type=text/javascript> function applink(){ window.location = 'zjmobile://platformapi/startapp'; var clickedAt = +tanggal baru setTimeout(function(){ !window.document.webkitHidden && setTimeout(function(){ if (+Tanggal baru - diklik < 2000){ window.location = 'https://itunes.apple.com/us/app/zhe-jiang-yi-dong-shou-ji/id898243566#weixin.qq.com'; ;</skrip> </tubuh></html>
Dengan cara ini, kebutuhan kami telah terpenuhi. Selama proses ini, kami juga menemui banyak penjelasan orang yang antusias. Saya akan mencatatnya di sini. Awalnya, beberapa orang tidak memahami kebutuhan saya dan mengira saya menerapkannya di sisi Android. Mereka meminta saya untuk memberikan nama paket. Untuk memeriksa apakah aplikasi sudah diinstal, catat caranya di sini, kodenya sebagai berikut:
Untuk metode lainnya, silakan lihat kelas alat saya: CommonUtilLibrary
Yang lain berpikir saya ingin memanggil aplikasi lokal dengan memuat tampilan web di aplikasi. Saya juga akan mencatatnya di sini.
webView.setWebViewClient(WebViewClient baru(){ @Override public boolean mustOverrideUrlLoading(Tampilan WebView, String url) { Uri uri=Uri.parse(url); if(uri.getScheme().equals(abraham)&&uri.getHost(). sama dengan(jingewenku.com)){ String arg0=uri.getQueryParameter(arg0); arg1=uri.getQueryParameter(arg1); }else{ view.loadUrl(url } mengembalikan nilai benar }});
Perlu juga dicatat bahwa jika aplikasi lokal dipanggil di WeChat, WeChat di ponsel menggunakan browser bawaan WeChat (Anda dapat mengirim alamat halaman yang diperoleh sebelumnya di server ke salah satu kontak Anda, klik Kirim pesan untuk membuka halaman web) Buka halaman HTML sederhana itu Catatan: Tidak mungkin membuka skema://host/datastring secara langsung. WeChat tidak akan menguraikan rangkaian karakter ini menjadi URL halaman untuk menjelajah dengan WeChat. Perangkat dihidupkan. Setelah masuk, Anda akan melihat halaman yang baru saja kami desain. Saat ini, mengklik untuk memulai aplikasi secara langsung tidak akan membangunkan APLIKASI yang diinstal sebelumnya. Karena WeChat telah memblokirnya, Anda harus memilih untuk membukanya di browser dari menu di sudut kanan atas. Saat ini, beberapa browser dapat aktif, tetapi beberapa browser tidak dapat aktif. Misalnya, jika browser bawaan pada mesin uji pembuat MX4 tidak berfungsi, UC Browser dapat aktif. Beberapa browser tidak dapat dibangunkan. Saya telah berkonsultasi dengan banyak informasi dan tidak dapat menyelesaikannya sepenuhnya. Satu-satunya hal yang dapat saya pikirkan sekarang adalah membiarkan front-end membuat penilaian pada browser yang mengalami masalah itu tidak didukung dan browser apa yang harus digunakan. Jika ada pembaca yang punya solusi, silakan tinggalkan pesan, terima kasih!
nota bene:
Mengapa saya tidak bisa mengaktifkan aplikasi di WeChat dan perlu membukanya dengan browser?
Karena WeChat telah menerapkan perlindungan skema pada semua koneksi berbagi, artinya, semua panggilan ke skema dalam koneksi berbagi telah diblokir oleh WeChat.
Lalu mengapa beberapa aplikasi bisa dimunculkan, seperti Dianping dan Didi Taxi?
Dari segi non-teknis, karena Taksi Dianping dan Didi, mereka adalah anak baptis sekaligus anak kandung WeChat. Dia memiliki perhatian khusus untuk putranya.
Dari sudut pandang teknis, WeChat memiliki daftar putih, dan panggilan skema tidak akan diblokir untuk koneksi bersama dalam daftar putih.
Tidak mengerti? Mari kita beri contoh.
Misalnya link berbagi Dianping adalah http://dazhongdianping.share.1.com
Sesuai dengan daftar putih WeChat, akan ada item http://dazhongdianping. Semua berbagi yang berasal dari koneksi ini tidak akan memblokir skema.
Misalnya http://dazhongdianping.share.2.com
http://dazhongdianping.share.3.com
Bahkan anak perusahaan Dianping pun bisa menggunakan http://zigongsi.dazhongdianping.share.3.com Nama domain root juga ada dalam daftar putih, sehingga bisa digunakan.
Pada titik ini, semua orang harus memahami bahwa tidak mungkin mengatasi masalah ini dengan meminjam skema Dianping kecuali tautan berbagi Anda dapat ditautkan ke nama domain root Dianping.
Pertanyaan ini harus dijelaskan dengan jelas. Hal lain yang perlu disebutkan adalah ketika mengunduh apk, WeChat memblokir aplikasi apa pun, dan anak laki-laki tidak terkecuali , Anda tidak bisa lepas dari penggunaan browser untuk membukanya.
Lampiran: Skema URL untuk Aplikasi Umum
1. Aplikasi bawaan sistem
nama | Skema URL | Pengidentifikasi bundel |
---|---|---|
Safari | http:// | |
peta | http://maps.google.com | |
Telepon | telp: // | |
SMS | SMS: // | |
Surat | surat ke:// | |
iBooks | ibook: // | |
Toko Aplikasi | itms-apps://itunes.apple.com | |
Musik | musik:// | |
Video | video: // |
2. Perangkat lunak pihak ketiga yang umum digunakan
nama | Skema URL | Pengidentifikasi bundel |
---|---|---|
persegi panjang:// | ||
Wechat wechat | weixin: // | |
TencentWeibo | TencentWeibo: // | |
Taobao | taobao: // | |
Alipay | Alipay: // | |
sinaweibo:// | ||
weico weibo | weico:// | |
peramban QQ | mqqbrowser: // | com.tencent.mttlite |
browser uc | lumba-lumba: // | com.dolphin.browser.iphone.chinese |
Buka Peramban | ohttp: // | com.oupeng.mini |
Peramban Sogou | SogouMSE:// | com.sogou.SogouExplorerMobile |
Peta Baidu | peta baidu:// | com.baidu.map |
krom | googlechrome: // | |
Youku | kamu: // | |
Jingdong | buka aplikasi.jdmoble:// | |
setiap orang | renren: // | |
Meituan | imetuan:// | |
Toko nomor 1 | wccbyihaodian:// | |
saya akan memeriksanya | wcc: // | |
Kamus Youdao | yddictproapp:// | |
Zhihu | zhihu:// | |
Tinjauan | dianping:// | |
disk mikro | sinavdisk: // | |
Doubanfm | doubanradio: // | |
Kelas terbuka NetEase | terbuka:// | |
Raja kartu nama serba bisa | kartu kamera:// | |
Musik QQ | qqmusik:// | |
Video Tencent | sepuluhvideo:// | |
Film Douban | film douban:// | |
Musik Cloud NetEase | orpheus: // | |
Berita NetEase | aplikasi berita:// | |
aplikasi NetEase | aplikasi:// | |
Lotere NetEase | ntescaipiao:// | |
Catatan Awan Youdao | catatan Anda: // | |
Lihat selengkapnya | duokan-pembaca: // | |
Indeks Kualitas Udara Nasional | beijing kotor: // | |
Musik Baidu | musik baidu:// | |
Pergi ke dapur | xcfapp:// |
Di atas adalah keseluruhan isi artikel ini, saya harap dapat bermanfaat untuk pembelajaran semua orang. Saya juga berharap semua orang mendukung VeVb Wulin Network.