如果 app 运行 在后台,则不会调用 continueUserActivity 方法

continueUserActivity method not get called if app running in background

我正在做一个用 Objective C 编写的大项目,并停留在 iOS 通用 Link 过程中。如果应用程序不在后台 运行,通用 Link 工作正常,调用 continueUserActivity 方法并按预期执行。但是,如果应用程序在后台 运行,点击通用 Link,它会打开应用程序并调用 willContinueUserActivityWithType 方法,但不会调用 continueUserActivity 方法。

我不知道为什么会这样。我在另一个项目中测试了 Universal Links,一切正常并且工作正常。但是在我的主要项目中,continueUserActivity 没有被调用。

iOS 版本 11.4

问题是 UIApplicationNSUserActivity 对象变为 nil。这就是 continueUserActivity 方法没有被调用的原因。要解决此问题,请初始化 NSUserActivity 并在 willContinueUserActivityWithType 方法中设置其委托。

- (BOOL)application:(UIApplication *)application willContinueUserActivityWithType:(nonnull NSString *)userActivityType {

application.userActivity = [[NSUserActivity alloc] initWithActivityType:userActivityType];
application.delegate = self;

return true;

}

我不知道这个方法是否正确,但它对我有用。