2015-05-14 95 views
0

這是在AppDelegate中處理冷啓動的應用鏈接爲Facebook的iOS SDK V4.1

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
} 

實現我的應用鏈接與被在Facebook上共享一些參數。如果我的應用程序最小化,點擊Facebook上的鏈接打開我的應用程序,並調用函數

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool 

像它應該發生的事情。

問題是如果我的應用程序終止(而不是最小化)點擊Facebook上的鏈接打開我的應用程序,但函數沒有被調用,所以我不能處理輸入參數。

我發現了一些關於在Facebook文檔中處理冷啓動的信息,但該信息已過時。

我錯過了要實施的東西還是Facebook bug?

+1

Facebook應用程序在iOS上打開您的應用程序的唯一方法是調用openURL方法,該方法應調用您的應用程序委託的openURL方法,而不管它是冷啓動還是最小化。 –

+0

@MingLi,但是當我們在didfinishLaunch方法中編寫上面的代碼時,OpenURL方法沒有被調用。它總是被稱爲didFinishLaunch方法。 – user2526811

+0

@NFilip你有沒有得到任何解決方案? – user2526811

回答

3

我難以置信我的頭有關這一段時間...

當您打開一個應用程序的鏈接和應用程序當前沒有運行,應用程序啓動和第一個電話application:didFinishLaunchingWithOptions。如果您在此方法中返回true,那麼它將通過調用application:openURL:sourceApplication:annotation:並傳入適當的參數。但是,如果application:didFinishLaunchingWithOptions返回false,則永不調用application:openURL:sourceApplication:annotation:

如果您使用的是FBSDK,那麼你會在你的application:didFinishLaunchingWithOptions結束時調用

return FBSDKApplicationDelegate.sharedInstance().application(application, 
didFinishLaunchingWithOptions: launchOptions) 

。如果你看他們的文檔,它表示它返回

是,如果該網址是用於Facebook SDK,否則不。

因此,因爲您的applink不適用於FBSDK,它將返回false。但是,您的launchOptions中可以使用鑰匙UIApplicationLaunchOptionsURLKeyUIApplicationLaunchOptionsSourceApplicationKey。在你的application:didFinishLaunchingWithOptions,如果你打電話

if let url = launchOptions?[UIApplicationLaunchOptionsURLKey] as? NSURL, 
    sourceApplication = launchOptions?[UIApplicationLaunchOptionsSourceApplicationKey] as? String {  
    self.application(application, openURL: url, sourceApplication: sourceApplication, annotation: nil) 
} 

那麼你可以解決它。我不確定你是否應該手動調用AppDelegate方法,但它適用於我。

+0

是否有解決方案? – user2526811

+1

'FBSDKApplicationDelegate.sharedInstance()。application(application, didFinishLaunchingWithOptions:launchOptions)' 'return true' 這個工作嗎? – krishnanunni

+0

FB SDK爲什麼會覆蓋超類結果超出我的範圍...... – pechar

相關問題