Files
digital-pilates/ios/WidgetManager.m
richarjiang b0e93eedae feat(ios): 添加用药计划Widget小组件支持
- 创建medicineExtension小组件,支持iOS桌面显示用药计划
- 实现App Group数据共享机制,支持主应用与小组件数据同步
- 添加AppGroupUserDefaultsManager原生模块,提供跨应用数据访问能力
- 添加WidgetManager和WidgetCenterHelper,实现小组件刷新控制
- 在medications页面和Redux store中集成小组件数据同步逻辑
- 支持实时同步今日用药状态(待服用/已服用/已错过)到小组件
- 配置App Group entitlements (group.com.anonymous.digitalpilates)
- 更新Xcode项目配置,添加WidgetKit和SwiftUI框架支持
2025-11-14 08:51:02 +08:00

56 lines
1.6 KiB
Objective-C

//
// WidgetManager.m
// OutLive
//
// Created by AI Assistant on 2025/11/13.
//
#import "WidgetManager.h"
#import "OutLive-Swift.h"
@implementation WidgetManager
RCT_EXPORT_MODULE();
+ (BOOL)requiresMainQueueSetup {
return NO;
}
RCT_EXPORT_METHOD(reloadTimelines:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject) {
@try {
if (@available(iOS 14.0, *)) {
// 刷新所有小组件
[WidgetCenterHelper reloadAllTimelinesIfAvailable];
// 也可以只刷新特定的medicine小组件
[WidgetCenterHelper reloadTimelinesIfAvailableOfKind:@"medicine"];
resolve(@"Widget timelines reloaded successfully");
} else {
reject(@"IOS_VERSION_ERROR", @"WidgetKit is not available on this iOS version", nil);
}
} @catch (NSException *exception) {
reject(@"RELOAD_TIMELINES_ERROR", exception.reason, nil);
}
}
RCT_EXPORT_METHOD(reloadTimeline:(NSString *)widgetKind
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject) {
@try {
if (@available(iOS 14.0, *)) {
[WidgetCenterHelper reloadTimelinesIfAvailableOfKind:widgetKind];
resolve([NSString stringWithFormat:@"Widget timeline reloaded for kind: %@", widgetKind]);
} else {
reject(@"IOS_VERSION_ERROR", @"WidgetKit is not available on this iOS version", nil);
}
} @catch (NSException *exception) {
reject(@"RELOAD_TIMELINE_ERROR", exception.reason, nil);
}
}
@end