| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- // Created by Tencent on 2023/06/09.
- // Copyright © 2023 Tencent. All rights reserved.
- /**
- * TUICore
- * This module is mainly responsible for data transfer, event notification and extension between TUI components.
- */
- #import <UIKit/UIKit.h>
- @protocol TUIServiceProtocol;
- @protocol TUIObjectProtocol;
- @protocol TUINotificationProtocol;
- @protocol TUIExtensionProtocol;
- @class TUIExtensionInfo;
- NS_ASSUME_NONNULL_BEGIN
- typedef void (^TUICallServiceResultCallback)(NSInteger errorCode, NSString *errorMessage, NSDictionary *param);
- #pragma mark - TUICore
- /////////////////////////////////////////////////////////////////////////////////
- //
- // Definition of TUICore, APIs
- //
- /////////////////////////////////////////////////////////////////////////////////
- @interface TUICore : NSObject
- + (void)registerService:(NSString *)serviceName object:(id<TUIServiceProtocol>)object;
- + (void)unregisterService:(NSString *)serviceName;
- + (nullable id<TUIServiceProtocol>)getService:(NSString *)serviceName;
- + (nullable id)callService:(NSString *)serviceName method:(NSString *)method param:(nullable NSDictionary *)param;
- + (nullable id)callService:(NSString *)serviceName
- method:(NSString *)method
- param:(nullable NSDictionary *)param
- resultCallback:(nullable TUICallServiceResultCallback)resultCallback;
- + (void)registerEvent:(NSString *)key subKey:(NSString *)subKey object:(id<TUINotificationProtocol>)object;
- + (void)unRegisterEventByObject:(id<TUINotificationProtocol>)object;
- + (void)unRegisterEvent:(nullable NSString *)key subKey:(nullable NSString *)subKey object:(nullable id<TUINotificationProtocol>)object;
- + (void)notifyEvent:(NSString *)key subKey:(nullable NSString *)subKey object:(nullable id)anObject param:(nullable NSDictionary *)param;
- + (void)registerExtension:(NSString *)extensionID object:(id<TUIExtensionProtocol>)object;
- + (void)unRegisterExtension:(NSString *)extensionID object:(id<TUIExtensionProtocol>)object;
- + (NSArray<TUIExtensionInfo *> *)getExtensionList:(NSString *)extensionID param:(nullable NSDictionary *)param;
- + (BOOL)raiseExtension:(NSString *)extensionID parentView:(UIView *)parentView param:(nullable NSDictionary *)param;
- // deprecated
- + (nullable NSDictionary *)getExtensionInfo:(NSString *)extensionID
- param:(nullable NSDictionary *)param __attribute__((deprecated("use getExtensionList:param: instead")));
- + (void)registerObjectFactory:(NSString *)factoryName objectFactory:(id<TUIObjectProtocol>)objectFactory;
- + (void)unRegisterObjectFactory:(NSString *)factoryName;
- + (nullable id)createObject:(NSString *)factoryName key:(NSString *)method param:(nullable NSDictionary *)param;
- @end
- #pragma mark - TUIRoute
- /////////////////////////////////////////////////////////////////////////////////
- //
- // Definition of TUIRoute, APIs
- //
- /////////////////////////////////////////////////////////////////////////////////
- typedef void (^TUIValueResultCallback)(NSDictionary *param);
- @interface NSObject (TUIRoute)
- @property(nonatomic, copy) TUIValueResultCallback navigateValueCallback;
- @end
- @interface UIViewController (TUIRoute)
- - (void)pushViewController:(NSString *)viewControllerKey param:(nullable NSDictionary *)param forResult:(nullable TUIValueResultCallback)callback;
- - (void)presentViewController:(NSString *)viewControllerKey param:(nullable NSDictionary *)param forResult:(nullable TUIValueResultCallback)callback;
- - (void)presentViewController:(NSString *)viewControllerKey
- param:(nullable NSDictionary *)param
- embbedIn:(nullable UINavigationController *)navigationVC
- forResult:(nullable TUIValueResultCallback)callback;
- @end
- #pragma mark - TUIService
- /////////////////////////////////////////////////////////////////////////////////
- //
- // Definition of TUIService, APIs
- //
- /////////////////////////////////////////////////////////////////////////////////
- @protocol TUIServiceProtocol <NSObject>
- @optional
- - (nullable id)onCall:(NSString *)method param:(nullable NSDictionary *)param;
- - (nullable id)onCall:(NSString *)method param:(nullable NSDictionary *)param resultCallback:(TUICallServiceResultCallback)resultCallback;
- @end
- @interface TUIServiceManager : NSObject
- + (instancetype)shareInstance;
- - (void)registerService:(NSString *)serviceName service:(id<TUIServiceProtocol>)service;
- - (void)unregisterService:(NSString *)serviceName;
- - (nullable id<TUIServiceProtocol>)getService:(NSString *)serviceName;
- - (nullable id)callService:(NSString *)serviceName
- method:(NSString *)method
- param:(nullable NSDictionary *)param
- resultCallback:(nullable TUICallServiceResultCallback)resultCallback;
- @end
- #pragma mark - TUIEvent
- /////////////////////////////////////////////////////////////////////////////////
- //
- // Definition of TUIEvent, APIs
- //
- /////////////////////////////////////////////////////////////////////////////////
- @protocol TUINotificationProtocol <NSObject>
- @optional
- - (void)onNotifyEvent:(NSString *)key subKey:(NSString *)subKey object:(nullable id)anObject param:(nullable NSDictionary *)param;
- @end
- @interface TUIEventManager : NSObject
- + (instancetype)shareInstance;
- - (void)registerEvent:(NSString *)key subKey:(NSString *)subKey object:(id<TUINotificationProtocol>)object;
- - (void)unRegisterEvent:(id<TUINotificationProtocol>)object;
- - (void)unRegisterEvent:(nullable NSString *)key subKey:(nullable NSString *)subKey object:(nullable id<TUINotificationProtocol>)object;
- - (void)notifyEvent:(NSString *)key subKey:(nullable NSString *)subKey object:(nullable id)object param:(nullable NSDictionary *)param;
- @end
- #pragma mark - TUIExtension
- /////////////////////////////////////////////////////////////////////////////////
- //
- // Definition of TUIExtension, APIs
- //
- /////////////////////////////////////////////////////////////////////////////////
- typedef void (^TUIExtensionClickCallback)(NSDictionary *param);
- @interface TUIExtensionInfo : NSObject
- @property(nonatomic, assign) NSInteger weight;
- @property(nonatomic, strong, nullable) UIImage *icon;
- @property(nonatomic, copy, nullable) NSString *text;
- @property(nonatomic, strong, nullable) NSDictionary *data;
- @property(nonatomic, copy, nullable) TUIExtensionClickCallback onClicked;
- @end
- @protocol TUIExtensionProtocol <NSObject>
- @optional
- - (nullable NSArray<TUIExtensionInfo *> *)onGetExtension:(NSString *)extensionID param:(nullable NSDictionary *)param;
- // If there exist responser, return YES
- - (BOOL)onRaiseExtension:(NSString *)extensionID parentView:(UIView *)parentView param:(nullable NSDictionary *)param;
- // deprecated
- - (nullable NSDictionary *)onGetExtensionInfo:(NSString *)extensionID
- param:(nullable NSDictionary *)param __attribute__((deprecated("use onGetExtension:param: instead")));
- @end
- @interface TUIExtensionManager : NSObject
- + (instancetype)shareInstance;
- - (void)registerExtension:(NSString *)extensionID extension:(id<TUIExtensionProtocol>)extension;
- - (void)unRegisterExtension:(NSString *)extensionID extension:(id<TUIExtensionProtocol>)extension;
- - (NSArray<TUIExtensionInfo *> *)getExtensionList:(NSString *)extensionID param:(nullable NSDictionary *)param;
- - (BOOL)raiseExtension:(NSString *)extensionID parentView:(UIView *)parentView param:(nullable NSDictionary *)param;
- // deprecated
- - (nullable NSDictionary *)getExtensionInfo:(NSString *)extensionID
- param:(nullable NSDictionary *)param __attribute__((deprecated("use getExtensionList:param: instead")));
- @end
- #pragma mark - TUIObjectFactory
- /////////////////////////////////////////////////////////////////////////////////
- //
- // Definition of TUIObjectFactory, APIs
- //
- /////////////////////////////////////////////////////////////////////////////////
- @protocol TUIObjectProtocol <NSObject>
- @optional
- - (nullable id)onCreateObject:(NSString *)method param:(nullable NSDictionary *)param;
- @end
- @interface TUIObjectFactoryManager : NSObject
- + (instancetype)shareInstance;
- - (void)registerObjectFactory:(NSString *)factoryName objectFactory:(id<TUIObjectProtocol>)objectFactory;
- - (void)unRegisterObjectFactory:(NSString *)factoryName;
- - (nullable id)createObject:(NSString *)factoryName method:(NSString *)method param:(nullable NSDictionary *)param;
- - (nullable id)createObject:(NSString *)method param:(NSDictionary *)param;
- @end
- NS_ASSUME_NONNULL_END
|