Я установил переустановку jdk. В моем случае необходимо было сделать:
java -version
sudo apt-get purge openjdk*
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
java -version
javac -version
, взятый из Установить Java JDK + JRE (oracle) в Kubuntu 13.04 из apt
На самом деле, в процессе поиска свойства launchedFromShortcut
на github я понял, что оно не используется в Javascript. Поэтому используется только флаг , чтобы сообщить, было ли приложение запущено с ярлыка, и передача его в RNN RNNReactRootViewCreator
кажется ненужной.
Убрано, что необходимость интеграции оказалась довольно простой, нам нужно только добавить launchedFromShortcut = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey] != nil;
в didFinishLaunchingWithOptions
и проверить ее значение в continueUserActivity
.
AppDelegate.m
будет выглядеть следующим образом:
#import "AppDelegate.h"
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <ReactNativeNavigation/ReactNativeNavigation.h>
#import <RNSiriShortcuts/RNSiriShortcuts-Swift.h>
@implementation AppDelegate
BOOL launchedFromShortcut;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
launchedFromShortcut = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey] != nil;
[ReactNativeNavigation bootstrap:jsCodeLocation launchOptions:launchOptions];
//
// Regular RNN bootstrap code omitted for brevity sake
//
return YES;
}
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler
{
if (launchedFromShortcut) {
ShortcutsModule.initialUserActivity = userActivity;
launchedFromShortcut = NO;
}
[ShortcutsModule onShortcutReceivedWithUserActivity:userActivity];
return YES;
}
@end