BBASMNAViewAdapterProtocol.h 2.6 KB
//
//  BBASMNAViewAdapterProtocol.h
//  BBAMNP
//
//  Created by yangshuo on 2021/3/4.
//

#import <Foundation/Foundation.h>
#import "BBASMNAViewProtocol.h"
#import "BBASMBaseAPIBridge.h"

@class WKWebView;
@protocol BBASMNAViewLoadProtocol;

NS_ASSUME_NONNULL_BEGIN

@protocol BBASMNAViewAdapterProtocol <NSObject>

@optional

/// 创建NAView
+ (UIView <BBASMNAViewProtocol>*)createNAView;

/// 创建naview 通信桥
/// @param jsContext jsContext
/// @param jsThread jsThread
+ (BBASMBaseAPIBridge *)jsBindingBridgeJSContext:(BBAJSBContext *)jsContext jsThread:(NSThread *)jsThread;

/// naViewJSPat
/// @param corePath swanjs path
+ (NSString *)naViewJSPathWithCorePath:(NSString *)corePath;

/// 尝试创建NAView复用
+ (void)tryCreateNAView;

/// 移除naview的缓存
+ (void)removeNAViewCache;

/// 存入预加载未用到的renderview
/// @param webview  webview
/// @param corePath corePath
/// @param appID appID
+ (void)putNoUseView:(UIView *)webview corePath:(NSString *)corePath appID:(NSString *)appID;

/// 根据小程序当前用的bbasmCorePath预下载一个slaveWebView,并存入对象池
/// @param corePath 当前用的bbasmCorePath
/// @param appID appID
/// @param extensionPath extensionPath
/// @param coreVersion coreVersion
+ (void)preLoadNextNAView:(NSString *)corePath
                    appID:(NSString *)appID
            extensionPath:(NSString *)extensionPath
              coreVersion:(NSString *)coreVersion;

/// 根据小程序当前用的bbasmCorePath从对象池里面取slaveWebView,同时会触发下一个slaveWebView的预加载
/// @param corePath 当前用的bbasmCorePath
/// @param appID appID
/// @param extensionPath extensionPath
/// @param coreVersion coreVersion
/// @param completeBlock  回调生成一个slaveWebView
+ (void)getNAViewWithCorePath:(NSString *)corePath
                        appID:(NSString *)appID
                extensionPath:(NSString *)extensionPath
                  coreVersion:(NSString *)coreVersion
                     complete:(void(^)(UIView *naView, BOOL isUsePreload))completeBlock;

/// 预加载naview
/// @param corePath corePath
/// @param extensionPath extensionPath
/// @param coreVersion coreVersion
/// @param completeBlock 预加载回调
+ (NSObject <BBASMNAViewLoadProtocol> *)startNAViewTaskCorePath:(NSString *)corePath
                                                  extensionPath:(NSString *)extensionPath
                                                    coreVersion:(NSString *)coreVersion
                                               completeCallBack:(void(^)(UIView <BBASMNAViewProtocol> *naView))completeBlock;
@end

NS_ASSUME_NONNULL_END