【发布时间】:2016-08-16 00:08:12
【问题描述】:
我已经在我们的应用程序中实现了 Handoff,当应用程序在前台或后台运行时,它在 web 到应用程序的切换以及反之亦然工作正常。
但是,如果应用程序没有运行,那么如果用户从 web 启动应用程序到应用程序切换,在 launchOptions 字典中,我会得到 UIApplicationLaunchOptionsUserActivityDictionaryKey,但缺少对活动的引用。
看截图:
如您所见,我只获得了 NSUserActivity 的 ID。
这是 iOS 9 中的错误吗?
有没有办法通过使用 id 来获取对活动的引用?
编辑,这里是代码,虽然我不认为这是相关的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if (launchOptions && [[launchOptions allKeys] containsObject:UIApplicationLaunchOptionsUserActivityDictionaryKey]) {
__block NSUserActivity *activity;
NSDictionary *userActivityDictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey];
if (userActivityDictionary) {
[userActivityDictionary enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[NSUserActivity class]]) {
activity = obj;
}
}];
}
//app was started by URL (deep linking), check parameters
if (activity) {
NSURL *url = activity.webpageURL;
//resume from URL
}
}
return YES;
}
【问题讨论】:
-
嘿左撇子;你能分享你试过的代码吗!
-
@SuhasPatil 添加了代码,虽然我认为这无关紧要
-
代码看起来不错,您是否尝试过使用另一种方法 (BOOL)application:continueUserActivity:restorationHandler 并检查您提供的活动类型的 plist。
-
应用程序终止时不会调用
application:continueUserActivity:restorationHandler委托。如果应用程序在后台并且用户从切换中恢复,则正在调用该委托并且我没有问题。我的问题是应用程序何时终止。是的,在 plist 文件中,活动类型已在NSUserActivityTypes下输入
标签: ios objective-c handoff nsuseractivity