卡片調(diào)用客戶端方法
更新時間:
本文介紹了在螞蟻動態(tài)卡片中調(diào)用 iOS 客戶端方法的實現(xiàn)路徑。
操作步驟
在工程中新建
NSObject
對象并引入?yún)f(xié)議<CubeModuleProtocol>
。#import <Foundation/Foundation.h> #import <CubeCrystal/CubeModuleProtocol.h> NS_ASSUME_NONNULL_BEGIN @interface MPCubeModule : NSObject <CubeModuleProtocol> @end NS_ASSUME_NONNULL_END
實現(xiàn)與模板約定的方法。
與模板約定的方法名為
push
,效果是單擊卡片時調(diào)用Native
實現(xiàn)Push Viewcontroller
操作。#import "MPCubeModule.h" #import <CubeBridge/CKJSDefine.h> @implementation MPCubeModule //cardUid 是 module 的屬性,在調(diào)用 module api 時可以通過 cardUid 判斷是哪個卡片產(chǎn)生的調(diào)用,cardUid 即 CubeCard 中的 cardUid。 @synthesize cardUid; //配置約定的方法 CK_EXPORT_METHOD(@selector(push:)) - (void)push:(CubeModuleMethodCallback)callback { if (callback) { //此處執(zhí)行Push ViewController操作 //回調(diào)給模板的參數(shù) callback(@"Push Page"); } } @end
注冊自定義 Module。
- (void)registerModules { [MPCubeManager shareManager]; //注冊自定義Module,key為module名稱(與服務(wù)端約定),value為客戶端類名 NSDictionary *dic = @{@"crystalnavigator": @"MPCubeModule"}; [[[CubeService sharedInstance] getEngine] registerModules:dic]; }
卡片側(cè)調(diào)用。
<script> //約定的自定義Module標(biāo)識 const navigator = requireModule("crystalnavigator"); export default { methods: { onClick() { navigator.push(event => {console.info(event);}); console.info('invoke on-click event'); } } } </script>
將卡片打包發(fā)布到后臺,即可調(diào)用客戶端方法。
文檔內(nèi)容是否對您有幫助?