iOS:苹果通用链接,如果应用程序未打开?

时间:2016-08-03 19:19:57

标签: ios

如果应用已经打开(后台运行),我的应用可以成功处理苹果通用链接。但是如果应用程序尚未打开,那么当我点击这样的链接,比如邮件时,应用程序就会打开,但是我从来没有得到应用程序的回调: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
}

1 个答案:

答案 0 :(得分:3)

你是对的。如果应用程序不在后台" continueUserActivity"将不会被召唤。

相反,application:didFinishLaunchingWithOptions会调用以下信息:

let activityDic = launchOptions?[UIApplicationLaunchOptionsUserActivityDictionaryKey]
if let isActivityDic = activityDic {
    // Continue activity here
}