2025-12-15 13:24:43 +08:00
|
|
|
|
//
|
|
|
|
|
|
// KBEmojiDataProvider.h
|
|
|
|
|
|
// CustomKeyboard
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
|
|
|
|
|
|
|
FOUNDATION_EXPORT NSString * const KBEmojiRecentsDidChangeNotification;
|
|
|
|
|
|
|
|
|
|
|
|
@class KBEmojiCategory, KBEmojiItem;
|
|
|
|
|
|
|
|
|
|
|
|
@interface KBEmojiItem : NSObject <NSCopying>
|
|
|
|
|
|
@property (nonatomic, copy, readonly) NSString *value;
|
|
|
|
|
|
@property (nonatomic, copy, readonly) NSString *name;
|
|
|
|
|
|
- (instancetype)initWithValue:(NSString *)value name:(NSString *)name;
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
|
|
@interface KBEmojiCategory : NSObject
|
|
|
|
|
|
@property (nonatomic, copy, readonly) NSString *identifier;
|
|
|
|
|
|
@property (nonatomic, copy, readonly) NSString *displayTitle;
|
|
|
|
|
|
@property (nonatomic, copy, readonly) NSString *iconSymbol;
|
|
|
|
|
|
@property (nonatomic, assign, readonly, getter=isDynamic) BOOL dynamic;
|
|
|
|
|
|
@property (nonatomic, copy, readonly) NSArray<KBEmojiItem *> *items;
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
|
|
@interface KBEmojiDataProvider : NSObject
|
|
|
|
|
|
|
|
|
|
|
|
+ (instancetype)shared;
|
|
|
|
|
|
|
|
|
|
|
|
/// 所有分类(按系统顺序),包含“常用”。
|
|
|
|
|
|
@property (nonatomic, copy, readonly) NSArray<KBEmojiCategory *> *categories;
|
|
|
|
|
|
|
|
|
|
|
|
/// 记录一次 emoji 选择,并刷新“常用”分类。
|
|
|
|
|
|
- (void)recordEmojiSelection:(NSString *)emoji;
|
|
|
|
|
|
|
|
|
|
|
|
/// 重新加载 JSON(若首次调用)。
|
|
|
|
|
|
- (void)reloadIfNeeded;
|
|
|
|
|
|
|
|
|
|
|
|
/// 更新当前语言对应的分类标题。
|
|
|
|
|
|
- (void)refreshLocalizedTitles;
|
|
|
|
|
|
|
2026-03-04 15:06:49 +08:00
|
|
|
|
/// 释放大块缓存(emoji 分类与索引),下次访问会重新加载。
|
|
|
|
|
|
- (void)purgeLargeCaches;
|
|
|
|
|
|
|
2025-12-15 13:24:43 +08:00
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_END
|