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

时间:2016-10-14 15:48:02

标签: ios objective-c cocoapods ios-frameworks

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

我试图打电话(在ios 9.3模拟器中使用目标部署ios 8.0

[[UIApplication sharedApplication] openURL:url];

以上代码适用于任何ios应用。但是当我在我的框架中放置相同的代码时,它包含在另一个应用程序中,它会导致异常和应用程序崩溃。

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

框架内的事情有何不同?什么是正确的方式。在这个例子中,我试图打开常规的https链接。

由于

1 个答案:

答案 0 :(得分:1)

由于这可能对其他人有用,这里似乎导致了这个问题:

[[UIApplication sharedApplication] openURL:url];

被调用的实际上并不是NSURL,而是NSString,因此在此过程中抛出了NSInvalidArgumentException - 在描述中有一个提示错误的类型。

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

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

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

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