在iOS(Facebook和Instagram)中处理不同的URLscheme

我甚至不知道如何定义这个问题,但是在这里呢。

我有一个使用Facebook SDK进行用户login的应用程序。 我遵循Facebook授权教程。 我不是100%确定它是如何工作的,但是这个部分在我的“AppDelegate.m”中似乎很重要。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [FBSession.activeSession handleOpenURL:url]; } 

到现在为止还挺好。 现在我想实现一个类似的Instagramlogin,以便用户可以访问他们的照片。 我运行这个例子没有问题( 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]; } 

现在我不能使用这个function(因为它是Facebook的一个重复)有没有办法将这两个函数结合Facebook和Instagram(也许与“如果”不同的url)。 还是我输了

PS:我注意到,当我打电话给我的Facebooklogin应用程序的url是类似的

fb4333597123414933 :// authorize /#access_token = BAAGKI2vHLxUBANbDegkrdoc4GJWUZC2clqLAzxz8IxEBZBdEyjrD2oTaGZA0g2AbSGWgvEhONKM6xJWzLCALGUBguqUpor6kXu9ZBewusNZCUe6BXXVX&expires_in = 5166254

在instagram它是这样的:

igfd725621c5e44198a5b8ad3f7a0ffa09 ://authorize#access_token=354172840.fd72562.bf6b3611632d4d00b6cef660ea9d9b6f

  - (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] } 

在这里输入图像说明

Swift : –

在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) } } 

我想我find了

[url scheme]给出了这些特定的URLscheme

Xcode – 多个URLscheme

对于Swift 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 }