【问题标题】:How to handle UIApplication handleOpenURL with multiple URL's如何使用多个 URL 处理 UIApplication handleOpenURL
【发布时间】:2013-12-30 22:53:03
【问题描述】:

我有一个将同时使用 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 上点击授权时出现此错误:

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

检查 URL 是否包含我正在尝试的每项服务的应用程序 ID 是否合理?因此,如果 URL 包含 instagram ID,则返回 instagram 处理程序,如果它包含 Facebook ID,则返回 Facebook 处理程序。

任何帮助都会很棒,谢谢!

【问题讨论】:

    标签: ios api instagram openurl


    【解决方案1】:

    Facebook 和 Instagram 都让您为其服务设置了自定义 URL 方案,因此我们将使用它来过滤 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;
    
    }
    

    您将变量定义为的位置

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

    与您在 Info.plist 文件中所做的完全一样

    【讨论】:

    • 完美,我应该知道这一点,但是当您长时间盯着一个明显的解决方案时,就会发生这种情况。这很好用,谢谢!
    • 大多数人可能已经知道,但应该是 INSTAGRAM_SCHEME @"ig12345678910",以防万一有人看到答案并感到困惑!
    • 为什么要比较方案?只需:return [self.instagram handleOpenURL:url] || [PFFacebookUtils handleOpenURL:url];。这假设如果 URL 不合适,两者都将返回 NO
    • 在处理非开源代码时,你不能真正做出假设
    • @rmaddy 你应该添加你的评论作为答案,谢谢它对我有用
    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多