如果应用已经打开(后台运行),我的应用可以成功处理苹果通用链接。但是如果应用程序尚未打开,那么当我点击这样的链接,比如邮件时,应用程序就会打开,但是我从来没有得到应用程序的回调:continueUserActivity ...(如果应用程序已经打开,我会这么做背景执行)...
即便:
如果应用程序是背景的,并且我点击了邮件应用程序中的苹果通用链接,那么这个方法(这是苹果公司的文档所说的实现处理通用链接的方法):
optional func application(_ application: UIApplication,
continueUserActivity userActivity: NSUserActivity,
restorationHandler restorationHandler: ([AnyObject]?) -> Void) -> Bool
获取调用。如果应用程序没有运行(我强制关闭它),那么当我点击链接时,该方法不会被调用,但应用程序已打开。
这应该是这样的吗?
根据MCMatan的线索,您必须在didFinishLaunchingWithOptions中执行类似的操作,然后将调用continueUserActivity:
if let userActivityDict = launchOptions?[UIApplicationLaunchOptionsUserActivityDictionaryKey] as? NSDictionary,
activityType = userActivityDict[UIApplicationLaunchOptionsUserActivityTypeKey] as? String where activityType == NSUserActivityTypeBrowsingWeb {
return true
}
答案 0 :(得分:3)
你是对的。如果应用程序不在后台" continueUserActivity"将不会被召唤。
相反,application:didFinishLaunchingWithOptions
会调用以下信息:
let activityDic = launchOptions?[UIApplicationLaunchOptionsUserActivityDictionaryKey]
if let isActivityDic = activityDic {
// Continue activity here
}