代码之家  ›  专栏  ›  技术社区  ›  hridayesh

从ios框架启动应用程序或在safari中打开链接

  •  0
  • hridayesh  · 技术社区  · 9 年前

    我正在开发一个ios框架(可以使用cocoapods安装)。当调用此框架的方法时,它将在safari上打开一个url。如果其他应用程序能够使用通用链接处理该url,那么它将启动该应用程序。

    我试图调用(在目标部署的ios 9.3模拟器中)ios 8.0

    [[UIApplication sharedApplication] openURL:url];
    

    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString scheme]: unrecognized selector sent to instance 0x7fc070717e00'
    

    框架内的工作方式是否不同?什么才是正确的方法。在本例中,我试图打开常规https链接。

    谢谢

    1 回复  |  直到 9 年前
        1
  •  1
  •   Eiko    9 年前

    由于这可能对其他人有用,以下是导致问题的原因:

    [[UIApplication sharedApplication] openURL:url];
    

    被调用的参数实际上不是 NSURL 但是 NSString 因此 NSInvalidArgumentException 在过程中抛出-在描述中有错误类型的提示。

    不过,编译器至少应该在这里发出警告。

    在编辑之前,提到了另一种方法:

    [[UIApplication sharedApplication] openURL:url options:nil completionHandler:^(BOOL success) {
        NSLog(@"opened url %d", success);
    }];
    

    失败的原因不同:该方法仅在iOS 10之后可用,因此 NSInvalidArgumentException 在运行iOS 9.3的测试环境中抛出。