クイック アクションでアプリを起動するときに、クイック アクションを機能させる方法を理解するのに苦労しています。
ただし、アプリがバックグラウンドにあり、クイック アクションで再起動された場合、クイック アクションは機能します。
クイック アクションから直接アプリを起動しようとすると、アプリ アイコンをタップするだけで起動したかのようにアプリが開きます (つまり、何もしません)。
これが私のApp Delegateのコードです。
didFinishLaunchingWithOptionsで:
UIApplicationShortcutItem *shortcut = launchOptions[UIApplicationLaunchOptionsShortcutItemKey];
if(shortcut != nil){
performShortcutDelegate = NO;
[self performQuickAction: shortcut fromLaunch:YES];
}
呼び出されたメソッド:
-(BOOL) performQuickAction: (UIApplicationShortcutItem *)shortcutItem fromLaunch:(BOOL)launchedFromInactive {
NSMutableArray *meetings = [self.fetchedResultController.fetchedObjects mutableCopy];
[meetings removeObjectAtIndex:0];
unsigned long count = meetings.count;
BOOL quickActionHandled = NO;
if(count > 0){
MainViewController *mainVC = (MainViewController *)self.window.rootViewController;
if(launchedFromInactive){
mainVC.shortcut = shortcutItem;
}
else{
UINavigationController *childNav;
MeetingViewController *meetingVC;
for(int i = 0; i < mainVC.childViewControllers.count; i++){
if([mainVC.childViewControllers[i] isKindOfClass: [UINavigationController class]]){
childNav = mainVC.childViewControllers[i];
meetingVC = childNav.childViewControllers[0];
break;
}
}
self.shortcutDelegate = meetingVC;
if ([shortcutItem.type isEqual: @"Meeting"]){
NSNumber *index = [shortcutItem.userInfo objectForKey:@"Index"];
[self.shortcutDelegate switchToCorrectPageWithIndex: index launchedFromInactive:NO];
quickActionHandled = YES;
}
}
}
実行する必要がある唯一のアクションは、ページ ビュー コントローラー (meetingVC 内に埋め込まれている) が、選択したショートカットに関して特定のページに切り替える必要があることです。
バックグラウンドからアプリを再度開くのではなく、ショートカットを使用して起動するときにショートカットが何もしない原因についてのアイデアはありますか??