Интегрировать собственный iOS SDK в существующий проект React Native

Прежде всего позвольте мне указать, что я не являюсь разработчиком нативной iOS, поэтому мне очень жаль, если я путаю некоторые термины, касающиеся разработки нативной iOS. Я создал приложение с использованием фреймворка React Native. Теперь мне нужно интегрировать собственный SDK(SightCall SDK). Я получил от них образец приложения и успешно интегрировал его в проект.

Я сделал функцию в react native, которая вызывает собственный модуль, который я реализовал в AppDelegate.m

_callSightcall = () => {
    CustomModule.namee('Success');

};

Эта функция вызывается при нажатии кнопки.

<TouchableHighlight style={styles.buttonHomePage}
  onPress={this._callSightcall}
>

В AppDelegate.m я создал модуль CustomScreen:

Собственный модуль AppDelegate.m

При нажатии кнопки этот метод успешно вызывается, и я получаю ответ в консоли.

Теперь проблема в том, что мне нужно сделать так, чтобы при нажатии кнопки я вызываю этот метод и открываю интерфейс SightCall. Если я заменю существующий код AppDelegate из AppDelegate.m и поместу код AppDelegate из образца кода SIghtCall и построю приложение, он будет успешным, и интерфейс SightCall будет построен (а не интерфейс, который я создал с помощью react native). Но на самом деле ему нужно открыть интерфейс SightCall, когда я нажимаю кнопку в существующем нативном приложении React.

Если я помещу это: код AppDelegate Sightcall в существующий AppDelegate и создаю приложение, он будет построен с интерфейсом SIghtcall.

Как я могу сделать это нажатием кнопки из реального приложения React Native, вызывающего созданный мной модуль CustomScreen, а затем показывающего интерфейс SIghtCall. Пользовательский модуль, вызываемый при нажатии кнопки в приложении React NAtive

Это код для вызова интерфейса SightCall (размещение этого кода AppDelegate в AppDelegate существующего приложения создает интерфейс 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

0 ответов

Другие вопросы по тегам