本文介紹了在 iOS 客戶端中初始化引擎擴展的操作步驟。
前置條件
操作步驟
設置預置卡片本地路徑。
設置卡片引擎類
CubeEngineConfig
的屬性。// 卡片引擎類 CubeEngineConfig 的屬性 /// 存儲模版的本地資源包的路徑 @property (nonatomic, strong) NSString *bundlePath;
設置本地螞蟻動態卡片的 assets 路徑。
- (void)initEngine { //本地模板所在的 Bundle 路徑 NSString *bundlePath = [NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], @"MPCubeBundle.bundle"]; CubeEngineConfig *config = [[CubeEngineConfig alloc] init]; //設置讀取資源路徑 [config setBundlePath:bundlePath]; //配置卡片引擎 [[CubeService sharedInstance] initWithConfig:config]; }
設置異常監聽。
CubeEngineConfig
支持異常監聽,捕獲前端代碼異常??蛻舳诵枰裱?CExceptionListener
代理,實現監聽方法。// 卡片引擎類 CubeEngineConfig 的屬性 /// 異常監聽 @property (nonatomic, strong) id<CExceptionListener> exceptionListener;
// CExceptionListener 代理類 // CrystalExceptionProtocol.h // CubeCrystal // Created by hejin on 2021/9/10. #import <Foundation/Foundation.h> #import "CExceptionInfo.h" #ifndef CExceptionListener_h #define CExceptionListener_h @protocol CExceptionListener <NSObject> @required /** 異常監聽 @param info 異常信息 */ - (void)onException:(CExceptionInfo *)info; @end
@interface MPCubeManager () <CExceptionListener> - (void)initEngine { CubeEngineConfig *engineConfig = [[CubeEngineConfig alloc] init]; //設置 delegate engineConfig.exceptionListener = self; [[CubeService sharedInstance] initWithConfig:engineConfig]; } //實現監聽方法,打印監聽信息 - (void)onException:(CExceptionInfo *)info { NSLog(@"異常類型:%lu", (unsigned long)info.type); NSLog(@"異常信息:%@", info.message); NSLog(@"異??ㄆ?id:%@", info.cardUid); NSLog(@"異常信息擴展參數:%@", info.extraInfo); }
設置網絡圖片下載 Handler。
CubeEngineConfig
支持攔截 Image 下載,定制圖片參數;客戶端需要遵循CKImageHandler
代理,實現監聽方法。// 卡片引擎類 CubeEngineConfig 的屬性 /// 圖片 handler,如果為空,則內部默認實現,建議自定義 handler @property (nonatomic, strong) id<CKImageHandler> imageHandler;
// CKImageHandler.h // CubePlatform // Created by Joe on 2018/8/15. // Copyright ? 2018年 mQuick. All rights reserved. #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #ifndef CKImageHandler_h #define CKImageHandler_h extern NSString *const CKImageAppInstanceIDKey; // 觸發加載圖片對應的 AppInstanceID extern NSString *const CKImagePageInstanceIDKey; // 觸發加載圖片對應的 PageInstanceID extern NSString *const CKImageInstanceOptionKey; // instance option. 針對 falcon 鏈路添加 typedef void(^CKImageHandlerCallback)(UIImage *image, NSError *error); @protocol CKImageHandler <NSObject> @required /** @param url 圖片下載 URL @param size 圖片尺寸 @param option 擴展參數,視圖片下載庫需求而定 @param callback 下載回調,下載完成后通過此接口回調 @return 返回表示本次下載任務的唯一 ID */ - (NSString *)fetchImage:(NSString *)url size:(CGSize)size option:(NSDictionary *)option callback:(CKImageHandlerCallback)callback; @optional /** @param fetchID 任務 ID, fetchImage 的返回值 */ - (void)cancel:(NSString*)fetchID; @end
@interface MPCubeManager () <CKImageHandler> - (void)initEngine { CubeEngineConfig *engineConfig = [[CubeEngineConfig alloc] init]; //設置 delegate engineConfig.imageHandler = self; [[CubeService sharedInstance] initWithConfig:engineConfig]; } - (NSString *)fetchImage:(NSString *)url size:(CGSize)size option:(NSDictionary *)option callback:(CKImageHandlerCallback)callback { NSLog(@"圖片地址:%@", url); NSLog(@"圖片擴展參數:%@", option); return @"20211202"; }
文檔內容是否對您有幫助?