Operasi manajemen paket offline meliputi: Pra-muat Aplikasi HTML5, Gunakan Paket Sumber Daya Global, Perbarui Aplikasi HTML5, Unduh Aplikasi HTML5, Instal Aplikasi HTML5, Dapatkan Informasi Aplikasi, Verifikasi Tanda Tangan Keamanan, dan Hapus Informasi Aplikasi Lokal.
Prasyarat
Anda telah menyelesaikan konfigurasi akses. Untuk detailnya, lihat Tambahkan SDK.
Anda telah menghasilkan paket offline. Untuk detailnya, lihat Hasilkan Paket Offline.
Pra-muat aplikasi HTML5
Secara umum, paket offline mungkin belum diunduh ketika aplikasi HTML5 dibuka untuk pertama kalinya. Dalam hal ini, Anda perlu membuka aplikasi menggunakan URL cadangan.
Pra-muat aplikasi HTML5 melibatkan pra-instalasi aplikasi HTML5 yang tersedia dalam paket instalasi yang dirilis oleh klien. Saat membuka aplikasi yang sudah diinstal sebelumnya untuk pertama kali, pengguna dapat langsung menggunakan sumber daya paket offline, yang meningkatkan pengalaman pengguna.
Kami merekomendasikan agar Anda hanya memprainstal aplikasi HTML5 inti dan tidak memprainstal aplikasi dengan tingkat penggunaan rendah.
Untuk pra-muat aplikasi HTML5, Anda perlu menyelesaikan langkah-langkah berikut:
Unduh file konfigurasi aplikasi HTML5
.jsondan paket offline yang diperlukan dari backend rilis aplikasi HTML5.Tambahkan file
.jsondan paket offline ke direktoriassetproyek.Saat aplikasi dimulai, panggil kode pra-muat untuk menginstal aplikasi. Contoh kode adalah sebagai berikut:
MPNebula.loadOfflineNebula("h5_json.json", new MPNebulaOfflineInfo("90000000_1.0.0.6.amr", "90000000", "1.0.0.6"));CatatanMetode ini adalah metode pemanggilan blok. Jangan panggil metode paket offline yang disematkan pada utas utama.
Metode ini hanya dapat dipanggil sekali. Jika dipanggil beberapa kali, hanya panggilan pertama yang valid. Oleh karena itu, Anda perlu memasukkan informasi tentang semua paket offline yang diperlukan sekaligus.
Jika beberapa paket amr disematkan, pastikan file tersebut sudah ada. Jika tidak ada, paket offline lain yang disematkan akan gagal.
Gunakan paket sumber daya global
Paket sumber daya global Nebula mengatasi redundansi yang disebabkan oleh beberapa aplikasi HTML5 yang menggunakan sumber daya yang sama. Sebagai contoh, aplikasi React menggunakan kode framework ReactJS. Anda dapat menyertakan sumber daya publik ke dalam paket sumber daya global untuk mengecilkan ukuran aplikasi HTML5.
Secara umum, paket sumber daya global perlu diatur sebelumnya untuk proyek, dan pembaruan selanjutnya masih dapat dikirimkan melalui backend aplikasi HTML5.
Contoh kode berikut menentukan paket sumber daya dengan ID aplikasi (appId) 66666692 sebagai paket sumber daya global dan mengatur sebelumnya paket offline assets/nebulaPreset/66666692.
getCommonResourceAppList: memberi tahu kontainer HTML5 bahwa paket offline dengan ID tertentu akan digunakan sebagai paket sumber daya global. Jika ID ini tidak dikonfigurasikan, paket offline ini tidak akan berfungsi meskipun disematkan.getH5PresetPkg: menentukan jalur dan versi paket sumber daya global yang disematkan. Kontainer HTML5 memuat paket sumber daya dari direktori sumber daya aset yang ditentukan. Namun, jika versi yang lebih baru terdeteksi di server, paket yang disematkan dari versi sebelumnya ini tidak akan dimuat. Selain itu, Anda dapat menggunakan metodeloadOffLineNebulayang disebutkan sebelumnya untuk mengatur sebelumnya paket sumber daya global. Dalam hal ini, Anda tidak perlu menentukan jalur dan versi paket offline yang disematkan dalam metode ini.CatatanMetode ini hanya berlaku untuk paket sumber daya global HTML5.
getTinyCommonApp: mengembalikan ID paket sumber daya kerangka mini app. Jika paket sumber daya global Anda hanya digunakan oleh kontainer HTML5, jangan tulis ID paket sumber daya publik ini dalam metode ini.
Contoh kode referensi:
public class H5AppCenterPresetProviderImpl implements H5AppCenterPresetProvider {
private static final String TAG = "H5AppCenterPresetProviderImpl";
// Paket sumber daya publik bisnis, coba hindari awalan 666666
private static final String COMMON_BIZ_APP = "xxxxxxxx";
// Paket sumber daya khusus untuk mini program, jangan pindahkan untuk bisnis
private static final String TINY_COMMON_APP = "66666692";
// Direktori aset paket yang diatur sebelumnya
private final static String NEBULA_APPS_PRE_INSTALL = "nebulaPreset" + File.separator;
// Koleksi paket yang diatur sebelumnya
private static final Map<String, H5PresetInfo> NEBULA_LOCAL_PACKAGE_APP_IDS = new HashMap();
static {
H5PresetInfo h5PresetInfo2 = new H5PresetInfo();
// Nama file direktori bawaan
h5PresetInfo2.appId = TINY_COMMON_APP;
h5PresetInfo2.version = "1.0.0.0";
h5PresetInfo2.downloadUrl = "";
NEBULA_LOCAL_PACKAGE_APP_IDS.put(TINY_COMMON_APP, h5PresetInfo2);
}
@Override
public Set<String> getCommonResourceAppList() {
Set<String> appIdList = new HashSet<String>();
appIdList.add(getTinyCommonApp());
appIdList.add(COMMON_BIZ_APP);
return appIdList;
}
@Override
public H5PresetPkg getH5PresetPkg() {
H5PresetPkg h5PresetPkg = new H5PresetPkg();
h5PresetPkg.setPreSetInfo(NEBULA_LOCAL_PACKAGE_APP_IDS);
h5PresetPkg.setPresetPath(NEBULA_APPS_PRE_INSTALL);
return h5PresetPkg;
}
@Override
public Set<String> getEnableDegradeApp() {
return null;
}
@Override
public String getTinyCommonApp() {
return TINY_COMMON_APP;
}
@Override
public InputStream getPresetAppInfo() {
return null;
}
@Override
public InputStream getPresetAppInfoObject() {
return null;
}
}Panggil kode berikut saat App dimulai:
H5Utils.getH5ProviderManager().setProvider(H5AppCenterPresetProvider.class.getName(), new H5AppCenterPresetProviderImpl());Perbarui aplikasi HTML5
Secara default, Nebula memeriksa versi terbaru setiap kali aplikasi HTML5 dibuka. Mengingat tekanan pada server, durasi pemeriksaan dibatasi dan secara default adalah 30 menit. Untuk segera memeriksa versi terbaru yang tersedia, panggil kode berikut untuk meminta pembaruan. Secara umum, kode ini dapat dipanggil setelah aplikasi dimulai atau setelah pengguna masuk.
MPNebula.updateAllApp(new MpaasNebulaUpdateCallback(){
@Override
public void onResult(final boolean success, final boolean isLimit, String detailCode) {
super.onResult(success, isLimit);
runOnUiThread(new Runnable() {
@Override
public void run() {
AUToast.makeToast(NebulaAppActivity.this,
success ? R.string.update_success : R.string.update_failure, 2000).show();
}
});
}
});Unduh aplikasi HTML5
API MPNebula memungkinkan Anda mengunduh aplikasi HTML5 secara manual.
/**
*Unduh paket offline.
*
* @param appId: ID paket offline
* @param mpaasNebulaDownloadCallback: callback unduhan
*/
public static void downloadApp(final String appId, final MpaasNebulaDownloadCallback mpaasNebulaDownloadCallback)Instal aplikasi HTML5
API MPNebula memungkinkan Anda menginstal aplikasi HTML5 secara manual.
/**
*Instal paket offline.
*
* @param appId: ID paket offline
* @param mpaasNebulaInstallCallback: callback instalasi
*/
public static void installApp(final String appId, final MpaasNebulaInstallCallback mpaasNebulaInstallCallback)Dapatkan informasi aplikasi
Panggil metode H5AppProvider untuk mendapatkan informasi terkait aplikasi HTML5.
H5AppProvider provider = H5Utils.getProvider(H5AppProvider.class.getName());
AppInfo appInfo = provider.getAppInfo("1000000"); // Dapatkan konfigurasi aplikasi.
boolean isInstalled = provider.isInstalled("100000", "1.0.0.0"); // Apakah versi aplikasi diinstal.
boolean isAvailable = provider.isAvailable("100000", "1.0.0.0");// Apakah paket offline versi aplikasi berhasil diunduh.Verifikasi tanda tangan keamanan
Nebula memiliki mekanisme verifikasi tanda tangan paket offline untuk mencegah program jahat merusak paket offline yang diunduh ke perangkat. Panggil antarmuka MPNebula untuk menggunakan verifikasi tanda tangan. Di versi 10.1.60 dan di atasnya, konfigurasi wadah tambahan diperlukan. Lihat Konfigurasi Wadah HTML5 untuk detailnya.
Panggil API ini sebelum membuka paket offline untuk pertama kali. Jika tidak, inisialisasi kunci publik gagal. Tentang kunci publik dan privat, lihat Konfigurasikan Paket Offline HTML5.
Verifikasi tanda tangan dilakukan secara paksa pada ponsel yang di-root, terlepas dari apakah verifikasi tanda tangan diaktifkan di klien.
```java
/**
* @param publicKey: kunci publik untuk verifikasi tanda tangan
*/
public static void enableAppVerification(final String publicKey)
```Hapus informasi aplikasi lokal
Nebula menyediakan antarmuka untuk menghapus informasi aplikasi lokal. Setelah informasi aplikasi lokal dihapus, sisi klien akan mengirim permintaan ke sisi layanan untuk mengunduh dan memperbarui aplikasi lokal saat aplikasi dibuka kembali.
public class MPNebula {
// appId adalah ID paket offline atau mini program
public static boolean deleteAppInfo(String appId);
}Versi dasar minimum yang didukung oleh API ini adalah 10.1.68.8 dan 10.1.60.14 masing-masing.