【问题标题】:How to get that application launch from spotlight search?如何从聚光灯搜索中启动该应用程序?
【发布时间】:2016-01-04 14:03:53
【问题描述】:

我已经在我的应用程序中实现了聚光灯搜索,一切正常,但在某些情况下,我想知道应用程序是否从聚光灯搜索启动?请帮助我如何知道这一点。

AppDelegate.m

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray *restorableObjects))restorationHandler{
    self.isSportlight = YES;
    self.strSportlightUnitname = [userActivity.userInfo valueForKey:@"kCSSearchableItemActivityIdentifier"];
    return YES;
}

rootViewcontroller.m

- (void)viewDidLoad
{
   if(!appDel.isSportlight){
        [self OnLaunchSettings];
    }else{
         [self setupSportLightEvent];
    }
}

Aspected 结果是 appDel.isSportlight = TRUE 但 appDel.isSportlight 总是得到 FALSE,因为在“ViewDidLoad”之后调用了“continueUserActivity:(NSUserActivity *)userActivity restoreHandler”方法

【问题讨论】:

  • 到目前为止你做了什么?您是否有时无法获取回调详细信息?
  • 是的,我通过“continueUserActivity restoreHandler”方法获得了回调详细信息,但它在 rootviewcontroller viewDidLoad 方法之后调用。
  • 所以你需要更详细地解释你的问题并显示一些代码
  • 请看我编辑的问题,

标签: ios objective-c iphone ios9


【解决方案1】:

根视图控制器不应该与应用委托签入,这种关系是错误的。应用程序委托应该告诉根视图控制器(或者如果其他控制器需要知道它,可能会发布一个全局通知),以便它可以随时响应,而不仅仅是在最初设置时。您需要编写代码,以便可以在不同状态之间切换。这通常可以通过推送或添加/删除子视图控制器来完成,这样您就可以划分每种模式的功能。

【讨论】:

  • 你是对的,但情况是,在我的应用程序中,还有一个功能“OnLaunch”和 onLaunch 中的用户设置类别,现在的问题是我必须在用户通过聚光灯启动的 viewid 负载中检查这一点然后忽略启动设置并继续用户搜索的类别。
  • 将其移出视图确实已加载,以便您可以在需要时重复使用并重新运行它
猜你喜欢
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2011-03-29
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多