如何处理多个URL的UIApplication handleOpenURL

我有一个应用程序,将使用Facebook和Instagram的API,这两个都需要我使用这个委托方法:

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

这是instagram提供的代码:

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

正如你所看到的,这是一个问题,因为我只能返回一个URL处理程序,但我需要能够决定哪一个。

在我的应用程序委托中,我已经注释了上面的Instagram选项,只留下了Facebook。 正如所料,Facebook将工作得很好,但当我点击Instagram上的授权时,我得到这个错误:

Instagram网址错误

显然,Facebook正在尝试处理来自Instagram的返回URL,所以它会出错。

是否有理由检查URL是否包含我尝试的每个服务的应用ID? 因此,如果URL包含instagram ID,则返回instagram处理程序(如果它包含Facebook ID),然后返回Facebook处理程序。

任何帮助将是伟大的,谢谢!

Facebook和Instagram都已经为你的服务设置了自定义的URLscheme,所以我们将使用它来过滤URL。

 -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { if ([[url scheme] isEqualToString:INSTAGRAM_SCHEME]) return [self.instagram handleOpenURL:url]; if ([[url scheme] isEqualToString:FACEBOOK_SCHEME]) return [PFFacebookUtils handleOpenURL:url]; return NO; } 

你在哪里定义你的variables

 #define INSTAGRAM_SCHEME @"ig12345678910" #define FACEBOOK_SCHEME @"fb12345678910" 

和你在Info.plist文件中一样