在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 }
- 如何阻止iOS 7控制中心控制音乐应用程序?
- 访问XCTestCase类中的应用程序委托对象导致misaligned_stack_error_ swift
- 应用程序崩溃与exc_bad_access代码exception
- 在今天的扩展中使用AppDelegate
- 在保持TabBar的同时在AppDelagate中打开ViewController
- 在iOS应用程序处于后台甚至死亡时获取位置信息
- 如何将数据从AppDelegate传递给ViewController?
- 线程1:加载AVPlayer时EXC_BAD_ACCESS(code = EXC_I386_GPFLT)
- UIApplicationLaunchOptionsLocalNotificationKey始终为空 – iOS