Artikel ini memperkenalkan plug-in analisis data serta metode penyesuaian untuk program mini.
I. Gambaran Umum Kerangka Kerja Plug-in dan Plug-in Analisis QuickTracking

1. Frontend
Program mini perlu mengintegrasikan "MiniApp PageEvent Report JS-library" untuk mendapatkan "MiniApp Page Lifecycle Events" dan mengirimkannya ke LifeCycleService melalui jsapi.Catatan: Fitur ini hanya mendukung kontainer miniapp WindVane.
1.1. Cara Mengintegrasikan Seperti yang ditunjukkan di bawah ini, dalam file HTML miniapp, sertakan tag skrip berikut https://g.alicdn.com/code/npm/@alife/windvane-page-lifecycle-hooks/0.1.0/index.js
Catatan: Urutan penyertaan penting; skrip ini harus disertakan setelah windvane.js.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1.0,viewport-fit=cover" />
<title>EMAS-WindVane JSBridge Demo</title>
<link rel="stylesheet" href="static/css/main.css" />
</head>
<body>
<div id="app"></div>
<!-- <script src="//g.alicdn.com/code/lib/react/18.2.0/umd/react.development.js"></script> -->
<!-- <script src="//g.alicdn.com/code/lib/react-dom/18.2.0/umd/react-dom.development.js"></script> -->
<!-- <script src="https://as.alipayobjects.com/g/component/fastclick/1.0.6/fastclick.js"></script> -->
<script src="https://g.alicdn.com/mtb/lib-windvane/3.0.0/windvane.js"></script>
<script src="https://g.alicdn.com/code/npm/@alife/windvane-page-lifecycle-hooks/0.1.0/index.js"></script>
<script src="static/js/bundle.js"></script>
</body>
</html>
1.2. Sinkronisasi Siklus Hidup MiniApp
Siklus hidup miniapp adalah sebagai berikut:
onPageStart: Dipicu ketika inisialisasi miniapp selesai (dipicu hanya sekali secara global).
onPageShow: Dipicu ketika miniapp membuka halaman atau kembali ke latar depan dari latar belakang.
onPageHide: Dipicu ketika miniapp meninggalkan halaman atau pindah ke latar belakang dari latar depan.
onPageEnd: Dipicu ketika miniapp ditutup.
Parameter halaman yang dilaporkan untuk miniapp adalah sebagai berikut:
url: URL halaman saat ini, contohnya ,
https://g.alicdn.com/superapp-fe-templates/JSAPITest/1.0.1/index.html#/.fullUrl: URL halaman saat ini, contohnya ,
https://g.alicdn.com/superapp-fe-templates/JSAPITest/1.0.1/index.html?spm=defwork.home.0.0.3f085c4bPdhs2c#/.title: Judul halaman saat ini.
userAgent:
navigator.userAgentdari perangkat saat ini, contohnya"Mozilla/5.0 (Linux; Android 11; IN2010 Build/RP1A.201005.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/132.0.6834.163 Mobile Safari/537.36 TTID/600000@DemoApp_Android_1.0.0 WindVane/8.5.0".viewportHeight: Tinggi viewport saat ini, contohnya
744.viewportWidth: Lebar viewport saat ini, contohnya
384.referrer: Alamat sumber halaman yang diminta saat ini, contohnya ,
https://1511899753493821546496.app.mini.windvane.suite.emas.alibaba.com/.user_id: userId, parameter userId dalam EMASUserInfoService(iOS),IUserInfoService(Android ) yang didaftarkan oleh inisialisasi kontainer.
mini_app_id: appId dari miniapp yang dibuka.
mini_app_version: Versi dari miniapp yang dibuka.
mini_app_type: Jenis dari miniapp yang dibuka, seperti windvane atau uniapp.
app_code: Kode aplikasi yang diteruskan saat inisialisasi kontainer.
timestamp: Cap waktu saat ini ketika halaman dipicu.
1.2.1. Membuka MiniApp

Seperti yang ditunjukkan pada diagram, JSAPI akan dipanggil, dan WVMiniPageEvent akan melaporkan onPageStart dan onPageShow, bersama dengan parameter halaman yang ditunjukkan pada diagram.
1.2.2. Navigasi Halaman

Seperti yang ditunjukkan pada diagram, JSAPI akan dipanggil, dan WVMiniPageEvent akan melaporkan onPageHide untuk halaman saat ini dan onPageShow untuk halaman target, bersama dengan parameter halaman yang ditunjukkan pada diagram.
1.2.3. Latar Depan ke Latar Belakang

Seperti yang ditunjukkan pada diagram, JSAPI akan dipanggil, dan WVMiniPageEvent akan melaporkan onPageHide untuk halaman saat ini, bersama dengan parameter halaman yang ditunjukkan pada diagram.
1.2.4. Latar Belakang ke Latar Depan

Seperti yang ditunjukkan pada diagram, JSAPI akan dipanggil, dan WVMiniPageEvent akan melaporkan onPageShow untuk halaman saat ini, bersama dengan parameter halaman yang ditunjukkan pada diagram.
1.2.5. Menutup MiniApp

Seperti yang ditunjukkan pada diagram, JSAPI akan dipanggil, dan WVMiniPageEvent akan melaporkan onPageHide dan onPageEnd, bersama dengan parameter halaman yang ditunjukkan pada diagram.
2. Klien: Android & iOS
2.1 Event MiniApp: Mendengarkan event siklus hidup program mini, termasuk:
Event Siklus Hidup MiniApp | Android Activity | iOS ViewController |
start | onCreate | viewDidLoad |
show | onResume | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil]; |
hide | onPause | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; |
close | onDestory | viewWillDisappear (if (self.isMovingFromParentViewController|| self.navigationController.isBeingDismissed)) |
2.2 Mendengarkan event siklus hidup halaman program mini (hanya mendukung WindVane).
2.3 Kerangka kerja plugin yang digunakan untuk manajemen plugin:
Digunakan untuk mendaftarkan plugin.
Digunakan untuk mengambil plugin tertentu.
2.4 LifeCycleService
Digunakan untuk menerima event siklus hidup halaman miniapp yang dikirim oleh 'MiniApp PageEvent Report JS-library' melalui jsapi (MiniAppPageEvent jsapi).
Digunakan untuk mendengarkan event siklus hidup miniapp (MiniApp Event).
Mengirimkan event siklus hidup halaman miniapp dan event siklus hidup miniapp ke plugin pelaporan melalui objek observer (Observer/Callback).
Saat ini, event siklus hidup yang dipantau oleh LifeCycleService adalah sebagai berikut.
Jenis Event | Event Halaman Mini App | Event Mini App |
start | YA | YA |
show | YA | YA |
hide | YA | YA |
end/close | YA (hanya untuk Android) | YA |
II. Pengembangan Plugin Kustom
1. Impor paket dependensi.
implementation com.aliyun.emas.suite.foundation:mini-app-plugin-base:1.0.0pod 'MiniAppPluginBase'2. Pengembangan plugin.
import com.alibaba.emas.android.windvane.mini.app.pluginsdk.plugin.BasePlugin;
public class CustomPlugin extends BasePlugin {
public CustomPlugin(Context context, ...) {
super(context);
...
}
@Override
public void start() {
...
}
...
}#import <EMASMiniAppService/EMASBasePlugin.h>
@interface EMASCustomPlugin : EMASBasePlugin
@property(nonatomic, strong) EMASPluginContext *plugContext;
@implementation EMASCustomPlugin
- (void)setPluginContext:(EMASPluginContext *)pluginContext {
self.plugContext = pluginContext;
}
- (void)start {
[super start];
// daftarkan Objek Observer
}
import UIKit
import EMASMiniAppService
@objc class EMASCustomPlugin: EMASBasePlugin, EMASIMiniAppEventObserver, EMASIMiniAppPageEventObserver {
var plugContext:EMASPluginContext?
//Catatan: perlu memanggil metode Swift setPluginContext, ingat untuk menambahkan @objc
@objc func setPluginContext(_ pluginContext: EMASPluginContext) {
self.plugContext = pluginContext
}
override func start() {
super.start()
///daftarkan Objek Observer
}
}3. Pendaftaran Plugin.
CustomPlugin customPlugin = new CustomPlugin(context, ...);
miniAppService.registerPlugin("NamaPlugin", customPlugin);EMASCustomPlugin *plugin = [[EMASCustomPlugin alloc] init];
[miniAppService registerPlugin:@"NamaPlugin" plugin:plugin];let plugin = EMASCustomPlugin()
miniAppService.registerPlugin("NamaPlugin", plugin: plugin)4. Pengambilan Plugin.
import com.alibaba.module.android.mini.app.service.plugin.PluginService;
BasePlugin plugin = PluginService.getInstance().getPlugin("NamaPlugin");EMASBasePlugin *plugin = [miniAppService getPlugin:@"NamaPlugin"];let plugin = miniAppService.getPlugin("NamaPlugin")5. Startup Plugin.
import com.alibaba.module.android.mini.app.service.plugin.PluginService;
// Metode 1
CustomPlugin customPlugin = new CustomPlugin(context, ...);
customPlugin.start();
// Metode 2
BasePlugin plugin = PluginService.getInstance().getPlugin("NamaPlugin");
plugin.start();
// Metode 1
EMASCustomPlugin *plugin = [[EMASCustomPlugin alloc] init];
[miniAppService registerPlugin:@"NamaPlugin" plugin:plugin];
[plugin start];
// Metode 2
EMASBasePlugin *plugin = [miniAppService getPlugin:@"NamaPlugin"];
[plugin start];
/// Metode 1
let plugin = EMASCustomPlugin()
miniAppService.registerPlugin("NamaPlugin", plugin: plugin)
plugin.start()
/// Metode 2
let plugin = miniAppService.getPlugin("NamaPlugin")
plugin.start()6. Ambil LifeCycleService di dalam plugin.
import com.alibaba.emas.android.windvane.mini.app.pluginsdk.environment.PluginEnv;
import com.alibaba.emas.android.windvane.mini.app.pluginsdk.ILifeCycleService;
ILifeCycleService lifeCycleService = PluginEnv.getInstance().getContainerContext().getLifeCycleService()#import <EMASMiniAppService/EMASLifeCycleService.h>
#import <EMASMiniAppService/EMASIMiniAppEventObserver.h>
#import <EMASMiniAppService/EMASIMiniAppPageEventObserver.h>
@interface EMASCustomPlugin()<EMASIMiniAppEventObserver, EMASIMiniAppPageEventObserver>
@property(nonatomic, strong) EMASPluginContext *plugContext;
@end
@implementation EMASCustomPlugin
- (void)getlifeCycleService {
EMASLifeCycleService *lifeCycleService = self.plugContext.context.getLifeCycleService;
}@objc class EMASCustomPlugin: EMASBasePlugin, EMASIMiniAppEventObserver, EMASIMiniAppPageEventObserver {
var plugContext:EMASPluginContext?
func getlifeCycleService() {
let lifeCycleService = self.plugContext?.context.getLifeCycleService()
}
}III. Pengembangan Plugin Pelaporan Kustom

1. Implementasikan objek observer untuk event siklus hidup MiniApp dan event siklus hidup halaman MiniApp
Parameter miniApp adalah sebagai berikut:
user_id: userId, parameter userId dalam EMASUserInfoService(iOS),IUserInfoService(Android ) yang didaftarkan oleh inisialisasi kontainer.
mini_app_id: appId dari miniapp yang dibuka.
mini_app_version: Versi dari miniapp yang dibuka.
mini_app_type: Jenis dari miniapp yang dibuka, seperti windvane atau uniapp.
app_code: Kode aplikasi yang diteruskan saat inisialisasi kontainer.
timestamp: Cap waktu saat ini ketika halaman dipicu.
import com.alibaba.emas.android.windvane.mini.app.pluginsdk.observer.IMiniAppEventObserver;
import com.alibaba.emas.android.windvane.mini.app.pluginsdk.observer.IMiniAppPageEventObserver;
import com.alibaba.emas.android.windvane.mini.app.pluginsdk.plugin.BasePlugin;
public class CustomReportPlugin extends BasePlugin implements IMiniAppEventObserver, IMiniAppPageEventObserver {
// Implementasi callback event siklus hidup MiniApp
@Override
void onMiniAppStart(Map<String, Object> params) {
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
@Override
void onMiniAppClose(Map<String, Object> params) {
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
@Override
void onMiniAppShow(Map<String, Object> params) {
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
@Override
void onMiniAppHide(Map<String, Object> params) {
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
// Implementasi callback event siklus hidup halaman MiniApp
void onPageStart(Map<String, Object> params) {
String url = (String) params.get("url");
String fullUrl = (String) params.get("fullUrl");
String title = (String) params.get("title");
String referrer = (String) params.get("referrer");
String userAgent = (String) params.get("userAgent");
double viewportWidth = (double) params.get("viewportWidth");
double viewportHeight = (double) params.get("viewportHeight");
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
void onPageHide(Map<String, Object> params) {
String url = (String) params.get("url");
String fullUrl = (String) params.get("fullUrl");
String title = (String) params.get("title");
String referrer = (String) params.get("referrer");
String userAgent = (String) params.get("userAgent");
double viewportWidth = (double) params.get("viewportWidth");
double viewportHeight = (double) params.get("viewportHeight");
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
void onPageShow(Map<String, Object> params) {
String url = (String) params.get("url");
String fullUrl = (String) params.get("fullUrl");
String title = (String) params.get("title");
String referrer = (String) params.get("referrer");
String userAgent = (String) params.get("userAgent");
double viewportWidth = (double) params.get("viewportWidth");
double viewportHeight = (double) params.get("viewportHeight");
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
void onPageEnd(Map<String, Object> params) {
String url = (String) params.get("url");
String fullUrl = (String) params.get("fullUrl");
String title = (String) params.get("title");
String referrer = (String) params.get("referrer");
String userAgent = (String) params.get("userAgent");
double viewportWidth = (double) params.get("viewportWidth");
double viewportHeight = (double) params.get("viewportHeight");
String userId = (String) params.get("user_id");
String appId = (String) params.get("mini_app_id");
String version = (String) params.get("mini_app_version");
String appType = (String) params.get("mini_app_type");
String appCode = (String) params.get("app_code");
String timestamp = (String) params.get("timestamp");
...
}
}@interface EMASCustomPlugin()<EMASIMiniAppEventObserver, EMASIMiniAppPageEventObserver>
@property(nonatomic, strong) EMASPluginContext *plugContext;
@end
@implementation EMASCustomPlugin
#pragma mark -EMASIMiniAppEventObserver
- (void)onMiniAppStart:(NSDictionary *)params {
NSString *appId = [params objectForKey:@"mini_app_id"];
NSString *appType = [params objectForKey:@"mini_app_type"];
NSString *userId = [params objectForKey:@"user_id"];
NSString *version = [params objectForKey:@"mini_app_version"];
NSString *appCode = [params objectForKey:@"app_code"];
NSString *timestamp = [params objectForKey:@"timestamp"];
...
}
-(void)onMiniAppShow:(NSDictionary *)params {
NSString *appId = [params objectForKey:@"mini_app_id"];
NSString *appType = [params objectForKey:@"mini_app_type"];
NSString *userId = [params objectForKey:@"user_id"];
NSString *version = [params objectForKey:@"mini_app_version"];
NSString *appCode = [params objectForKey:@"app_code"];
NSString *timestamp = [params objectForKey:@"timestamp"];
...
}
- (void)onMiniAppHide:(NSDictionary *)params {
NSString *appId = [params objectForKey:@"mini_app_id"];
NSString *appType = [params objectForKey:@"mini_app_type"];
NSString *userId = [params objectForKey:@"user_id"];
NSString *version = [params objectForKey:@"mini_app_version"];
NSString *appCode = [params objectForKey:@"app_code"];
NSString *timestamp = [params objectForKey:@"timestamp"];
...
}
- (void)onMiniAppClose:(NSDictionary *)params {
NSString *appId = [params objectForKey:@"mini_app_id"];
NSString *appType = [params objectForKey:@"mini_app_type"];
NSString *userId = [params objectForKey:@"user_id"];
NSString *version = [params objectForKey:@"mini_app_version"];
NSString *appCode = [params objectForKey:@"app_code"];
NSString *timestamp = [params objectForKey:@"timestamp"];
...
}
#pragma mark -EMASIMiniAppPageEventObserver
- (void)onPageStart:(NSDictionary *)params {
NSString *url = [params objectForKey:@"url"];
NSString *fullUrl = [params objectForKey:@"fullUrl"];
NSString *title = [params objectForKey:@"title"];
NSString *referrer = [params objectForKey:@"referrer"];
NSString *userAgent = [params objectForKey:@"userAgent"];
double viewportWidth = [params objectForKey:@"viewportWidth"];
double viewportHeight = [params objectForKey:@"viewportHeight"];
NSString *appId = [params objectForKey:@"mini_app_id"];
NSString *appType = [params objectForKey:@"mini_app_type"];
NSString *userId = [params objectForKey:@"user_id"];
NSString *version = [params objectForKey:@"mini_app_version"];
NSString *appCode = [params objectForKey:@"app_code"];
NSString *timestamp = [params objectForKey:@"timestamp"];
...
}
- (void)onPageShow:(NSDictionary *)params {
NSString *url = [params objectForKey:@"url"];
NSString *fullUrl = [params objectForKey:@"fullUrl"];
NSString *title = [params objectForKey:@"title"];
NSString *referrer = [params objectForKey:@"referrer"];
NSString *userAgent = [params objectForKey:@"userAgent"];
double viewportWidth = [params objectForKey:@"viewportWidth"];
double viewportHeight = [params objectForKey:@"viewportHeight"];
NSString *appId = [params objectForKey:@"mini_app_id"];
NSString *appType = [params objectForKey:@"mini_app_type"];
NSString *userId = [params objectForKey:@"user_id"];
NSString *version = [params objectForKey:@"mini_app_version"];
NSString *appCode = [params objectForKey:@"app_code"];
NSString *timestamp = [params objectForKey:@"timestamp"];
...
}
- (void)onPageHide:(NSDictionary *)params {
NSString *url = [params objectForKey:@"url"];
NSString *fullUrl = [params objectForKey:@"fullUrl"];
NSString *title = [params objectForKey:@"title"];
NSString *referrer = [params objectForKey:@"referrer"];
NSString *userAgent = [params objectForKey:@"userAgent"];
double viewportWidth = [params objectForKey:@"viewportWidth"];
double viewportHeight = [params objectForKey:@"viewportHeight"];
NSString *appId = [params objectForKey:@"mini_app_id"];
NSString *appType = [params objectForKey:@"mini_app_type"];
NSString *userId = [params objectForKey:@"user_id"];
NSString *version = [params objectForKey:@"mini_app_version"];
NSString *appCode = [params objectForKey:@"app_code"];
NSString *timestamp = [params objectForKey:@"timestamp"];
...
}
- (void)onPageEnd:(NSDictionary *)params {
// Metode ini tidak dipanggil di iOS
}import UIKit
import EMASMiniAppService
@objc class EMASCustomPlugin: EMASBasePlugin, EMASIMiniAppEventObserver, EMASIMiniAppPageEventObserver {
var plugContext:EMASPluginContext?
///EMASIMiniAppEventObserver
func onMiniAppStart(_ params: [AnyHashable : Any]) {
let appId = params["mini_app_id"] as? String
let appType = params["mini_app_type"] as? String
let userId = params["user_id"] as? String
let version = params["mini_app_version"] as? String
let appCode = params["app_code"] as? String
let timestamp = params["timestamp"] as? String
}
func onMiniAppShow(_ params: [AnyHashable : Any]) {
let appId = params["mini_app_id"] as? String
let appType = params["mini_app_type"] as? String
let userId = params["user_id"] as? String
let version = params["mini_app_version"] as? String
let appCode = params["app_code"] as? String
let timestamp = params["timestamp"] as? String
}
func onMiniAppHide(_ params: [AnyHashable : Any]) {
let appId = params["mini_app_id"] as? String
let appType = params["mini_app_type"] as? String
let userId = params["user_id"] as? String
let version = params["mini_app_version"] as? String
let appCode = params["app_code"] as? String
let timestamp = params["timestamp"] as? String
}
func onMiniAppClose(_ params: [AnyHashable : Any]) {
let appId = params["mini_app_id"] as? String
let appType = params["mini_app_type"] as? String
let userId = params["user_id"] as? String
let version = params["mini_app_version"] as? String
let appCode = params["app_code"] as? String
let timestamp = params["timestamp"] as? String
}
///EMASIMiniAppPageEventObserver
func onPageStart(_ params: [AnyHashable : Any]) {
let url = params["url"] as? String
let fullUrl = params["fullUrl"] as? String
let title = params["title"] as? String
let referrer = params["referrer"] as? String
let userAgent = params["userAgent"] as? String
let viewportWidth = params["viewportWidth"] as? Double
let viewportHeight = params["viewportHeight"] as? Double
let appId = params["mini_app_id"] as? String
let appType = params["mini_app_type"] as? String
let userId = params["user_id"] as? String
let version = params["mini_app_version"] as? String
let appCode = params["app_code"] as? String
let timestamp = params["timestamp"] as? String
}
func onPageShow(_ params: [AnyHashable : Any]) {
let url = params["url"] as? String
let fullUrl = params["fullUrl"] as? String
let title = params["title"] as? String
let referrer = params["referrer"] as? String
let userAgent = params["userAgent"] as? String
let viewportWidth = params["viewportWidth"] as? Double
let viewportHeight = params["viewportHeight"] as? Double
let appId = params["mini_app_id"] as? String
let appType = params["mini_app_type"] as? String
let userId = params["user_id"] as? String
let version = params["mini_app_version"] as? String
let appCode = params["app_code"] as? String
let timestamp = params["timestamp"] as? String
}
func onPageHide(_ params: [AnyHashable : Any]) {
let url = params["url"] as? String
let fullUrl = params["fullUrl"] as? String
let title = params["title"] as? String
let referrer = params["referrer"] as? String
let userAgent = params["userAgent"] as? String
let viewportWidth = params["viewportWidth"] as? Double
let viewportHeight = params["viewportHeight"] as? Double
let appId = params["mini_app_id"] as? String
let appType = params["mini_app_type"] as? String
let userId = params["user_id"] as? String
let version = params["mini_app_version"] as? String
let appCode = params["app_code"] as? String
let timestamp = params["timestamp"] as? String
}
func onPageEnd(_ params: [AnyHashable : Any]) {
/// Metode ini tidak dipanggil di iOS
}
}2. Daftarkan Objek Observer
import com.alibaba.emas.android.windvane.mini.app.pluginsdk.environment.PluginEnv;
public class CustomReportPlugin extends BasePlugin implements IMiniAppEventObserver, IMiniAppPageEventObserver {
private void registerObserver() {
PluginEnv.getInstance().getContainerContext().getLifeCycleService().registerMiniAppObserver(this);
PluginEnv.getInstance().getContainerContext().getLifeCycleService().registerMiniPageObserver(this);
}
}
#import <EMASMiniAppService/EMASIMiniAppEventObserver.h>
#import <EMASMiniAppService/EMASIMiniAppPageEventObserver.h>
@interface EMASCustomPlugin()<EMASIMiniAppEventObserver, EMASIMiniAppPageEventObserver>
@property(nonatomic, strong) EMASPluginContext *plugContext;
@end
@implementation EMASCustomPlugin
- (void)registerObserver {
[self.plugContext.context.getLifeCycleService registerMiniAppObserver:self];
[self.plugContext.context.getLifeCycleService registerMiniPageObserver:self];
}import UIKit
import EMASMiniAppService
@objc class EMASCustomPlugin: EMASBasePlugin, EMASIMiniAppEventObserver, EMASIMiniAppPageEventObserver {
var plugContext:EMASPluginContext?
func registerObserver() {
self.plugContext?.context.getLifeCycleService().registerMiniAppObserver(self)
self.plugContext?.context.getLifeCycleService().registerMiniPageObserver(self)
}
}3. Daftarkan, Ambil, dan Mulai Plugin
Untuk detailnya, lihat bagian 2.3 hingga 2.5.
4. Event MiniApp Lainnya
Custom jsapi
IV. Catatan
Setelah membuka antarmuka miniapp,
onPageShowakan dipanggil dua kali.Di iOS, penutupan miniapp tidak akan memicu event
onPageEnd(Anda perlu memanggil metode penutupan halaman dalam metode penutupan miniapp).