Ios 从Siri启动应用程序的原因”;NSUserActivity有一个附加的交互,但它未被处理;

Ios 从Siri启动应用程序的原因”;NSUserActivity有一个附加的交互,但它未被处理;,ios,swift,siri,nsuseractivity,Ios,Swift,Siri,Nsuseractivity,我可以从Siri成功启动我的应用程序,但我在调试器中收到了NSUserActivity消息。我不记得在以前的版本中看到过这个信息,但也许我没有注意到。我错过了什么?有什么东西是我应该从堆里弹出来的吗?设置一些标志 (我只能在设备上启动应用程序,不能在模拟器中启动,但这是另一天的问题。Siri告诉我有问题,请再试一次。) 出现此消息是因为您未处理userActivity的交互。 简单处理程序如下所示: func应用程序(application:UIApplication,continue user

我可以从Siri成功启动我的应用程序,但我在调试器中收到了NSUserActivity消息。我不记得在以前的版本中看到过这个信息,但也许我没有注意到。我错过了什么?有什么东西是我应该从堆里弹出来的吗?设置一些标志

(我只能在设备上启动应用程序,不能在模拟器中启动,但这是另一天的问题。Siri告诉我有问题,请再试一次。)


出现此消息是因为您未处理userActivity的交互。 简单处理程序如下所示:

func应用程序(application:UIApplication,continue userActivity:NSUserActivity,restorationHandler:@escaping([UIUserActivityRestoring]?)->Void)->Bool{
userActivity.interaction?捐赠(完成:{中出错
如果let error=error{
打印(“与错误的交互:\(error.localizedDescription)”)
}否则{
打印(“捐赠互动成功”)
}
})
返回真值
}

因为您没有处理userActivity的交互,所以出现了一条消息。 简单处理程序如下所示:

func应用程序(application:UIApplication,continue userActivity:NSUserActivity,restorationHandler:@escaping([UIUserActivityRestoring]?)->Void)->Bool{
userActivity.interaction?捐赠(完成:{中出错
如果let error=error{
打印(“与错误的交互:\(error.localizedDescription)”)
}否则{
打印(“捐赠互动成功”)
}
})
返回真值
}

您有什么解决方案吗?我在xamarin.iOS中也面临同样的问题app@Divyesh_08对不起,我有一个月没有时间讨论这个问题了。不,我还没弄明白。你有什么解决办法吗?我在xamarin.iOS中也面临同样的问题app@Divyesh_08对不起,我有一个月没有时间讨论这个问题了。不,我还没有弄明白。虽然这段代码可能会回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,仅代码的答案没有用处。这消除了未处理的交互错误,但现在我得到了以下错误:[Intents]-[NSUserActivity(IntentsAdditions)interaction]无法取消归档交互PayloadData,错误为:error Domain=nscoCaerorDomain Code=4865“请求的密钥:'root'”UserInfo={NSDebugDescription=requested key:'root'}虽然这段代码可以回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,仅代码回答是没有用的。这消除了未经处理的交互错误,但现在我得到了这个:[Intents]-[NSUserActivity(IntentsAdditions)交互]无法取消对interactionPayloadData的存档,错误为:错误域=NSCOCAERRORDOMAIN代码=4865“请求的密钥:'root'”用户信息={NSDEBUGSCRIPTION=请求的密钥:'root'}
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

    if userActivity.activityType != "com.mydomain.myactivity" {
        os_log("The app was called with an invalid activityType")
        return false
    }

    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
    
    let tabBarController = self.window!.rootViewController as! UITabBarController
    tabBarController.tabBar.barTintColor = UIColor(red: 184.0/255.0, green: 64.0/255.0, blue: 37.0/255.0, alpha: 0.2)

    guard let tabVCs = tabBarController.viewControllers else {
        os_log("restorationHandler: Can't get tabVCs")
        return false
    }
    
    guard let myTargetViewController = mainStoryboard.instantiateViewController(withIdentifier: "myTargetViewController") as? MyTargetViewController else {
        os_log("restorationHandler: Can't get myTargetViewController from storyboard")
        return false
    }
    
    guard let tab1NavViewController = tabVCs[0] as? UINavigationController else {
        os_log("restorationHandler: Can't get tab1NavViewController from tabVCs")
        return false
    }
    
    tabBarController.selectedIndex = 0
    myTargetViewController.calledFromShortcut = true
    
    tab1NavViewController.pushViewController(myTargetViewController, animated: true)
    
    return true
}