本文介绍了在蚂蚁动态卡片中调用 iOS 客户端方法的实现路径。
操作步骤
在工程中新建
NSObject
对象并引入协议<CubeModuleProtocol>
。#import <Foundation/Foundation.h> #import <CubeCrystal/CubeModuleProtocol.h> NS_ASSUME_NONNULL_BEGIN @interface MPCubeModule : NSObject <CubeModuleProtocol> @end NS_ASSUME_NONNULL_END
实现与模板约定的方法。
与模板约定的方法名为
push
,效果是单击卡片时调用Native
实现Push Viewcontroller
操作。#import "MPCubeModule.h" #import <CubeBridge/CKJSDefine.h> @implementation MPCubeModule //cardUid 是 module 的属性,在调用 module api 时可以通过 cardUid 判断是哪个卡片产生的调用,cardUid 即 CubeCard 中的 cardUid。 @synthesize cardUid; //配置约定的方法 CK_EXPORT_METHOD(@selector(push:)) - (void)push:(CubeModuleMethodCallback)callback { if (callback) { //此处执行Push ViewController操作 //回调给模板的参数 callback(@"Push Page"); } } @end
注册自定义 Module。
- (void)registerModules { [MPCubeManager shareManager]; //注册自定义Module,key为module名称(与服务端约定),value为客户端类名 NSDictionary *dic = @{@"crystalnavigator": @"MPCubeModule"}; [[[CubeService sharedInstance] getEngine] registerModules:dic]; }
卡片侧调用。
<script> //约定的自定义Module标识 const navigator = requireModule("crystalnavigator"); export default { methods: { onClick() { navigator.push(event => {console.info(event);}); console.info('invoke on-click event'); } } } </script>
将卡片打包发布到后台,即可调用客户端方法。
文档内容是否对您有帮助?