Прежде всего позвольте мне отметить, что я не являюсь нативным iOS разработчиком, поэтому я прошу прощения, если я путаю некоторые термины, касающиеся нативной iOS разработки. Я построил приложение с использованием React Native Framework. Теперь мне нужно интегрировать нативный SDK (SightCall SDK). Я получил образец приложения от них и успешно интегрировал в проект.
Я сделал функцию в реагировать на нативный, которая вызывает собственный модуль, который я реализовал в AppDelegate.m
_callSightcall = () => {
CustomModule.namee('Success');
};
Это функция вызывается при нажатии кнопки
<TouchableHighlight style={styles.buttonHomePage}
onPress={this._callSightcall}
>
В AppDelegate.m я создал модуль CustomScreen:
Собственный модуль AppDelegate.m
Кнопка включения Нажмите, этот метод успешно вызван, и я получаю ответ в консоли.
Теперь проблема в том, что мне нужно, чтобы при нажатии кнопки я вызывал этот метод и открывал интерфейс SightCall. Если я заменю существующий код AppDelegate из AppDelegate.m и поместу код AppDelegate из примера кода SIghtCall и построю APP, то это будет успешно, и будет создан интерфейс SightCall (а не интерфейс, который я создал с использованием собственного кода). Но на самом деле нужно открыть интерфейс SightCall, когда я нажимаю на кнопку в существующем собственном приложении реакции.
Если я помещу это: Код Sightcall AppDelegate в существующий AppDelegate и создаю приложение. будет построен с интерфейсом SIghtcall.
Как сделать это по нажатию кнопки из фактического собственного приложения React, вызвать созданный мной модуль CustomScreen, а затем отобразить интерфейс SIghtCall. Пользовательский модуль, вызываемый по нажатию кнопки в React NAtive APP
Это код для вызова интерфейса SightCall (помещение этого кода AppDelegate в AppDelegate существующего APP создает интерфейс SIghtCall) Но размещение этого кода в пользовательский модуль, который я сделал, не работает
@interface AppDelegate ()
@property (nonatomic) LSApplicationModel *model;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([[NSProcessInfo processInfo] arguments].count == 2) {
NSLog(@"App launched with parameters: %@", [[NSProcessInfo processInfo] arguments]);
dispatch_async(dispatch_get_main_queue(), ^{
[self application:application openURL:[NSURL URLWithString:[[NSProcessInfo processInfo] arguments][1]] sourceApplication:nil annotation:@(0)];
});
}
return YES;
}
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey,id> *)launchOptions {
// init SDK Model
self.model = [[LSApplicationModel alloc] init];
if (@available(iOS 13.0, *)) {
self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0L), ^{
[self.model openURL:[url absoluteString]];
});
return YES;
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0L), ^{
[self.model openURL:[[userActivity webpageURL] absoluteString]];
});
return YES;
}
return NO;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[self.model resetUI];
[self.model cancelACDRequest];
}
@end