Kinerja halaman H5 online tradisional sering terpengaruh oleh kondisi jaringan. Untuk mengatasi masalah ini, Anda dapat mengemas berbagai layanan ke dalam paket offline dan menggunakan platform penerbitan untuk mengirimkan pembaruan ke resource client.
Topik ini menjelaskan cara mengelola paket offline:
Prasyarat
Pastikan Anda telah mengintegrasikan NebulamPaaSBiz.framework ke dalam proyek client setelah menambahkan SDK.
Membuat paket offline
Untuk membuat paket offline .amr, buat terlebih dahulu paket frontend .zip, lalu hasilkan paket .amr secara online. Untuk informasi selengkapnya, lihat Membuat paket offline.
Memuat paket offline
Anda dapat memuat paket offline dengan dua cara, tergantung pada apakah paket tersebut telah dipreset di client:
Preset paket offline
Halaman seperti halaman utama atau halaman logon harus dimuat dengan cepat, terlepas dari kondisi jaringan. Untuk mencapai hal ini, Anda dapat mengemas resource tersebut ke dalam paket offline dan mempreset-nya di proyek. Hal ini memastikan resource tetap dimuat dengan cepat meskipun aplikasi sedang offline.
Lakukan langkah-langkah berikut:
Buat bundle terpisah, misalnya
DemoCustomPresetApps.bundle. Tambahkan paket offline.amrdan fileh5_json.jsonyang diunduh dari platform penerbitan ke dalam bundle ini.
CatatanPlatform penerbitan saat ini hanya mendukung pengunduhan file konfigurasi
h5_json.jsonuntuk satu paket offline saja. Jika Anda mempreset beberapa paket offline, Anda harus menggabungkannya secara manual ke dalam array data file JSON tersebut.Saat menginisialisasi container, panggil metode
initNebulaWithCustomPresetApplistPathdan atur path paket offline yang dipreset ke bundle yang telah Anda buat pada langkah sebelumnya.- (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Initialize rpc [MPRpcInterface initRpc]; // Initialize the container // [MPNebulaAdapterInterface initNebula]; // Set the custom JSAPI path and preset offline package information NSString *presetApplistPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle/h5_json.json"] ofType:nil]; NSString *appPackagePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle"] ofType:nil]; NSString *pluginsJsapisPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPlugins.bundle/Poseidon-UserDefine-Extra-Config.plist"] ofType:nil]; [MPNebulaAdapterInterface initNebulaWithCustomPresetApplistPath:presetApplistPath customPresetAppPackagePath:appPackagePath customPluginsJsapisPath:pluginsJsapisPath]; }Seperti saat memuat paket offline yang tidak dipreset, panggil metode yang disediakan oleh container Nebula untuk memuat paket offline ketika Anda membuka halaman yang sesuai.
- (void)openPresetPackage { [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"20180910"}]; }
Muat paket offline jarak jauh
Selain mempreset paket offline di client, Anda juga dapat menerbitkan paket offline secara dinamis melalui platform penerbitan. Client kemudian dapat langsung memuat paket offline remote tersebut. Pendekatan ini mencegah ukuran paket client menjadi terlalu besar akibat terlalu banyak paket offline yang dipreset.
Lakukan langkah-langkah berikut:
Setelah aplikasi dimulai, preload informasi paket dan unduh paket offline tersebut. Hal ini mencegah munculnya layar kosong saat paket dibuka.
Metode antarmuka
@interface MPNebulaAdapterInterface : NSObject /** * Permintaan untuk satu aplikasi * * @param params Daftar permintaan dalam format {appid:version}. Anda dapat mengirimkan beberapa app ID. Nomor versi dapat memiliki hingga empat segmen, seperti 1.0.0.1. Jika Anda tidak menentukan versi, kirimkan nilai kosong untuk menggunakan versi terbaru. Pencocokan fuzzy didukung. Misalnya, '*' cocok dengan versi terbaru, dan '1.*' cocok dengan versi terbaru yang dimulai dengan 1. * @param finish Callback penyelesaian */ - (void)requestNebulaAppsWithParams:(NSDictionary *)params finish:(NAMRequestFinish)finish; @end
Setelah client dikonfigurasi, Anda dapat mengirimkan paket offline melalui platform penerbitan. Untuk informasi selengkapnya, lihat Real-time Release > Offline Package Management > Publish an offline package.
Saat Anda membuka halaman yang sesuai, panggil metode yang disediakan oleh container Nebula untuk memuat paket offline. Halaman tersebut kemudian akan menggunakan paket offline yang dikirimkan dari platform penerbitan.
Kode contoh
- (void)openPresetPackage { [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"20180910"}]; }Metode antarmuka
@interface MPNebulaAdapterInterface : NSObject /** * Membuat container H5 berdasarkan informasi paket offline yang diberikan dan secara otomatis mendorong pembukaannya. * * @param params Parameter startup untuk container H5. Parameter appId wajib diisi. Untuk parameter opsional lainnya, lihat dokumen di https://tech.antfin.com/docs/2/85001. * */ - (void)startH5ViewControllerWithNebulaApp:(NSDictionary *)params; @end
Menggunakan paket resource global
Paket resource global Nebula mencegah redundansi ketika beberapa aplikasi H5 menggunakan resource yang sama, seperti kode framework ReactJS. Dengan menempatkan resource publik ke dalam paket resource global, Anda dapat mengurangi ukuran masing-masing aplikasi H5. Anda dapat mengonfigurasi paket offline global dalam metode afterDidFinishLaunchingWithOptions, seperti yang ditunjukkan pada kode contoh berikut. Pada contoh ini, 77777777 adalah app ID dari paket resource global.
Properti nebulaCommonResourceAppList memberi tahu container H5 untuk menggunakan paket offline dengan ID tertentu sebagai paket resource global. Jika Anda tidak mengonfigurasi ID ini, paket tersebut tidak akan berlaku, meskipun sudah dibundel.
```
- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[MPNebulaAdapterInterface shareInstance].nebulaCommonResourceAppList = @[@"77777777"];// Set the global resource package
}
```Untuk meningkatkan kecepatan pemuatan halaman, Anda sebaiknya mempreset paket resource global. Anda tetap dapat mengirimkan pembaruan nanti melalui Backend aplikasi H5.
Memperbarui paket offline secara dinamis
mPaaS menyediakan kemampuan pembaruan dinamis yang kuat. Anda dapat mengirimkan versi baru paket offline melalui platform penerbitan untuk memperbarui halaman yang sesuai di client. Untuk informasi selengkapnya, lihat Real-time Release > Offline Package Management > Publish an offline package.