2013-04-25 66 views
5

我甚至不知道如何定義問題,但在這裏。在iOS(Facebook和Instagram)中處理不同的URL方案

我有一個使用Facebook SDK進行用戶登錄的應用程序。我遵循Facebook授權教程。我不是100%確定它是如何工作的,但在我的「AppDelegate.m」中這部分看起來很重要。

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 

    return [FBSession.activeSession handleOpenURL:url]; 
} 

到目前爲止好。現在我想爲Instagram執行類似的登錄,以便用戶可以訪問他們的照片。我運行這個例子沒有問題(https://github.com/crino/instagram-ios-sdk)。當我試圖將其導入到我的項目中時,我卡住了。由於Instagram的項目也有在AppDelegate中(IGAppDelegate)函數

-(BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 

    return [self.instagram handleOpenURL:url]; 
} 

現在我不能使用此功能(因爲它是Facebook的一個的副本) 有沒有辦法來爲Facebook結合這兩種功能和instagram(可能與「如果」爲不同的網址)。還是我失去了

PS:我注意到,當我打電話給我的Facebook登錄的應用程序的URL是一樣的東西

fb4333597123414933://授權/#=的access_token BAAGKI2vHLxUBANbDegkrdoc4GJWUZC2clqLAzxz8IxEBZBdEyjrD2oTaGZA0g2AbSGWgvEhONKM6xJWzLCALGUBguqUpor6kXu9ZBewusNZCUe6BOXYvX & expires_in = 5166254

在Instagram的是這樣的:

igfd725621c5e44198a5b8ad3f7a0ffa09://授權#access_tok EN = 354172840.fd72562.bf6b3611632d4d00b6cef660ea9d9b6f

回答

9
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
    { 
     NSLog(@"url: %@", [url scheme]); 

     BOOL callBack; 
     // Facebook Call back checking. 
     if ([[url scheme] isEqualToString:@"facebook_url_schema"]) 
     { 
      callBack = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication]; 
     } 
     // Instagram call back checking. 
     else if ([[url scheme] isEqualToString:@"instagram_url_schema"]) 
     { 
      callBack = [self.instagram handleOpenURL:url]; 
     } 
     return callBack;![enter image description here][1] 
    } 

enter image description here

+0

你放什麼輸入圖像描述 – AlxVallejo 2017-07-11 02:13:25

+0

沒有必要。 URL方案很重要。 – abhi 2017-07-11 10:19:52

4

斯威夫特: -

在swift應用中同時使用Google+和Facebook的示例,它們都需要appDelegate中的OpenURL方法。

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

    println("URL : \(url)") 
    if(url.scheme!.isEqual("fb1627825840806667")) { 
     println("Facebook url scheme") 

    return FBSDKApplicationDelegate.sharedInstance().application(
      application, 
      openURL: url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 

    } else { 

     println("Google+ url scheme") 

     return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation) 

    } 
} 
0

對於雨燕2.0

//MARK: FACEBOOK , GOOGLE CALLBACK URL METHOD 
    //google-Firebase signin - IOS 8 
    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 
    { 
     let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation) 

     let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) 

     return facebookDidHandle || googleDidHandle 
    } 

    //google-Firebase signin - IOS 9 
    @available(iOS 9.0, *) 
    func application(application: UIApplication, 
        openURL url: NSURL, options: [String: AnyObject]) -> Bool { 

     let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) 

     let googleDidHandle = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) 

     return facebookDidHandle || googleDidHandle 
    } 
相關問題