Commit b5e7077a authored by Wei Han's avatar Wei Han

ui progress

parent de578d80
......@@ -8,32 +8,32 @@
<key>BinaryPath</key>
<string>QmsPluginFramework.framework/QmsPluginFramework</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>QmsPluginFramework.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>QmsPluginFramework.framework/QmsPluginFramework</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>QmsPluginFramework.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
......
//QmsPlugin.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
FOUNDATION_EXPORT NSNumber* QmsPluginMultiply(double a, double b);
FOUNDATION_EXPORT UIViewController* QmsPluginMakeViewController(void);
......@@ -6,11 +6,11 @@
<dict>
<key>Headers/QmsPlugin.h</key>
<data>
T0w73SfaKmay5cfzE/KHplzhWis=
5nKoARTfB27hIPyN1aDnt2M2AlM=
</data>
<key>Info.plist</key>
<data>
QvWHhX2X4hW9mXAFtK1rMMulanM=
ScoY0XAgmZ3U9Q0BvlfgQfJm2bo=
</data>
</dict>
<key>files2</key>
......@@ -19,7 +19,7 @@
<dict>
<key>hash2</key>
<data>
U05V7l0WqfmXhNjNLDaPBAUgwRfBgPpUE5n7pvQshgg=
YSvzim+1uTbTL+VKFNabNPhqRNP3ftgBHgFyhbD5cCM=
</data>
</dict>
</dict>
......
//QmsPlugin.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
FOUNDATION_EXPORT NSNumber* QmsPluginMultiply(double a, double b);
FOUNDATION_EXPORT UIViewController* QmsPluginMakeViewController(void);
......@@ -6,11 +6,11 @@
<dict>
<key>Headers/QmsPlugin.h</key>
<data>
T0w73SfaKmay5cfzE/KHplzhWis=
5nKoARTfB27hIPyN1aDnt2M2AlM=
</data>
<key>Info.plist</key>
<data>
mHHohDKLbelgffJEne6sKFR+cnQ=
JGviPenfphujtQEGyJZCIZTsd2c=
</data>
</dict>
<key>files2</key>
......@@ -19,7 +19,7 @@
<dict>
<key>hash2</key>
<data>
U05V7l0WqfmXhNjNLDaPBAUgwRfBgPpUE5n7pvQshgg=
YSvzim+1uTbTL+VKFNabNPhqRNP3ftgBHgFyhbD5cCM=
</data>
</dict>
</dict>
......
......@@ -6,8 +6,15 @@
objectVersion = 77;
objects = {
/* Begin PBXBuildFile section */
2FAEF09A2E8B7BC80086EDA3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FAEF0992E8B7BC80086EDA3 /* UIKit.framework */; };
2FAEF09C2E8B7BD40086EDA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FAEF09B2E8B7BD40086EDA3 /* Foundation.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
2F9647652E86307D002CC7CB /* QmsPluginFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = QmsPluginFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
2FAEF0992E8B7BC80086EDA3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.0.sdk/System/iOSSupport/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
2FAEF09B2E8B7BD40086EDA3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
......@@ -36,6 +43,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2FAEF09C2E8B7BD40086EDA3 /* Foundation.framework in Frameworks */,
2FAEF09A2E8B7BC80086EDA3 /* UIKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -46,6 +55,7 @@
isa = PBXGroup;
children = (
2F9647672E86307D002CC7CB /* QmsPluginFramework */,
2FAEF0982E8B7BC80086EDA3 /* Frameworks */,
2F9647662E86307D002CC7CB /* Products */,
);
sourceTree = "<group>";
......@@ -58,6 +68,15 @@
name = Products;
sourceTree = "<group>";
};
2FAEF0982E8B7BC80086EDA3 /* Frameworks */ = {
isa = PBXGroup;
children = (
2FAEF09B2E8B7BD40086EDA3 /* Foundation.framework */,
2FAEF0992E8B7BC80086EDA3 /* UIKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
......
//QmsPlugin.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
FOUNDATION_EXPORT NSNumber* QmsPluginMultiply(double a, double b);
FOUNDATION_EXPORT UIViewController* QmsPluginMakeViewController(void);
......@@ -4,3 +4,15 @@
NSNumber* QmsPluginMultiply(double a, double b) {
return @(a * b);
}
UIViewController* QmsPluginMakeViewController(void) {
UIViewController *vc = [UIViewController new];
vc.view.backgroundColor = [UIColor whiteColor];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(40, 100, 300, 40)];
label.text = @"UI from xcframework (no subclass)";
label.font = [UIFont boldSystemFontOfSize:22];
[vc.view addSubview:label];
return vc;
}
#import <React/RCTBridgeModule.h>
#import <QmsPluginSpec/QmsPluginSpec.h>
#import <QmsPluginFramework/QmsPlugin.h>
#import <QmsPluginFramework/QmsPlugin.h> // this is your xcframework header
@interface QmsPlugin : NSObject <NativeQmsPluginSpec>
@end
......@@ -9,7 +9,14 @@
RCT_EXPORT_MODULE()
// Implement multiply using the xcframework
- (instancetype)init {
if (self = [super init]) {
NSLog(@"[QmsPlugin] Native module initialized");
}
return self;
}
// Wraps the C function QmsPluginMultiply
- (NSNumber *)multiply:(double)a b:(double)b {
NSLog(@"[QmsPlugin] multiply called with a=%f, b=%f", a, b);
NSNumber *result = QmsPluginMultiply(a, b);
......@@ -17,13 +24,54 @@ RCT_EXPORT_MODULE()
return result;
}
// Wraps the C function QmsPluginMakeViewController
- (void)showPluginUI {
NSLog(@"[QmsPlugin] showPluginUI CALLED from JS");
dispatch_async(dispatch_get_main_queue(), ^{
UIViewController *vc = QmsPluginMakeViewController();
NSLog(@"[QmsPlugin] created QmsPluginViewController: %@", vc);
// Find topmost view controller
UIWindow *keyWindow = nil;
for (UIWindowScene *scene in UIApplication.sharedApplication.connectedScenes) {
if (scene.activationState == UISceneActivationStateForegroundActive) {
keyWindow = scene.windows.firstObject;
if (keyWindow) break;
}
}
if (keyWindow == nil) {
NSLog(@"[QmsPlugin] ERROR: keyWindow is nil");
return;
} else {
NSLog(@"[QmsPlugin] Found keyWindow: %@", keyWindow);
}
UIViewController *presentingVC = keyWindow.rootViewController;
NSLog(@"[QmsPlugin] rootViewController = %@", presentingVC);
while (presentingVC.presentedViewController) {
presentingVC = presentingVC.presentedViewController;
}
if (presentingVC) {
NSLog(@"[QmsPlugin] Presenting VC = %@", presentingVC);
[presentingVC presentViewController:vc animated:YES completion:^{
NSLog(@"[QmsPlugin] UI presented successfully");
}];
} else {
NSLog(@"[QmsPlugin] ERROR: No presenting view controller");
}
});
}
// TurboModule boilerplate
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
(const facebook::react::ObjCTurboModule::InitParams &)params
{
NSLog(@"[QmsPlugin] getTurboModule called");
return std::make_shared<facebook::react::NativeQmsPluginSpecJSI>(params);
}
@end
......@@ -8,32 +8,32 @@
<key>BinaryPath</key>
<string>QmsPluginFramework.framework/QmsPluginFramework</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>QmsPluginFramework.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>QmsPluginFramework.framework/QmsPluginFramework</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>QmsPluginFramework.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
......
//QmsPlugin.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
FOUNDATION_EXPORT NSNumber* QmsPluginMultiply(double a, double b);
FOUNDATION_EXPORT UIViewController* QmsPluginMakeViewController(void);
......@@ -6,11 +6,11 @@
<dict>
<key>Headers/QmsPlugin.h</key>
<data>
T0w73SfaKmay5cfzE/KHplzhWis=
5nKoARTfB27hIPyN1aDnt2M2AlM=
</data>
<key>Info.plist</key>
<data>
QvWHhX2X4hW9mXAFtK1rMMulanM=
ScoY0XAgmZ3U9Q0BvlfgQfJm2bo=
</data>
</dict>
<key>files2</key>
......@@ -19,7 +19,7 @@
<dict>
<key>hash2</key>
<data>
U05V7l0WqfmXhNjNLDaPBAUgwRfBgPpUE5n7pvQshgg=
YSvzim+1uTbTL+VKFNabNPhqRNP3ftgBHgFyhbD5cCM=
</data>
</dict>
</dict>
......
//QmsPlugin.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
FOUNDATION_EXPORT NSNumber* QmsPluginMultiply(double a, double b);
FOUNDATION_EXPORT UIViewController* QmsPluginMakeViewController(void);
......@@ -6,11 +6,11 @@
<dict>
<key>Headers/QmsPlugin.h</key>
<data>
T0w73SfaKmay5cfzE/KHplzhWis=
5nKoARTfB27hIPyN1aDnt2M2AlM=
</data>
<key>Info.plist</key>
<data>
mHHohDKLbelgffJEne6sKFR+cnQ=
JGviPenfphujtQEGyJZCIZTsd2c=
</data>
</dict>
<key>files2</key>
......@@ -19,7 +19,7 @@
<dict>
<key>hash2</key>
<data>
U05V7l0WqfmXhNjNLDaPBAUgwRfBgPpUE5n7pvQshgg=
YSvzim+1uTbTL+VKFNabNPhqRNP3ftgBHgFyhbD5cCM=
</data>
</dict>
</dict>
......
......@@ -2,6 +2,7 @@ import { TurboModuleRegistry, type TurboModule } from 'react-native';
export interface Spec extends TurboModule {
multiply(a: number, b: number): number;
showPluginUI(): void;
}
export default TurboModuleRegistry.getEnforcing<Spec>('QmsPlugin');
......@@ -3,3 +3,12 @@ import QmsPlugin from './NativeQmsPlugin';
export function multiply(a: number, b: number): number {
return QmsPlugin.multiply(a, b);
}
export function showPluginUI(): void {
QmsPlugin.showPluginUI();
}
export default {
multiply,
showPluginUI,
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment