2016-08-03 115 views
0

如果應用程序已經打開(背景),我的應用程序可以成功處理蘋果通用鏈接。但是,如果應用程序尚未打開,那麼當我點擊郵件中的鏈接時,應用程序將打開,但我永遠不會收到應用程序的回調:continueUserActivity ...(如果應用程序已經打開/中背景)...iOS:蘋果通用鏈接如果應用程序未打開?

機智:

如果應用程序中背景,和我點擊一個蘋果通用鏈路上,譬如說,郵件應用程序,那麼這個方法(這是蘋果的文件說,實施以處理通用鏈接):

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

您需要發佈您的代碼,爲了更徹底地解釋一下我們爲您排憂解難;) – brandonscript

+0

@brandonscript我認爲這是完全清楚,但我增加了更多 – Colin

回答

3

你是正確的。如果應用程序不在後臺,「continueUserActivity」將不會被調用。

相反,application:didFinishLaunchingWithOptions將與信息,請致電:

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