如何使用多个URL处理UIApplication handleOpenURL

 mobiledu2502857827 发布于 2023-02-07 13:57

我有一个将使用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处理程序.

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

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文件中一样

    2023-02-07 14:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有