ios - 在我的应用程序中使用 IBAction 打开时 iBooks 应用程序崩溃

标签 ios objective-c ibooks

好吧,我在使用应用程序中的 IBAction 打开 iBooks 应用程序时遇到问题。我已将其设置为当用户按下按钮时,它会调用此操作来打开 iBooks 应用程序:

-(IBAction)openBooks:(id)sender
{
    NSString *stringURL = "iBooks://";
    NSURL *url = [NSURL URLWithString:stringURL];
    [[UIApllication sharedApplication] openURL:url];
}

这使得整个应用程序切换这个并且看起来很棒。我看到书架上应该放着我的所有书籍,但 iBooks 应用程序在我的书籍加载之前就崩溃了!我写的应用程序没有崩溃,但 iBooks 失败了!

我通过 XCode 运行我的应用程序(该应用程序本身并未分发到我的 iPad),这就是 iBooks 崩溃的原因吗?当我触摸 iBooks 图标将其打开(不是通过我的应用程序)时,它可以正常打开并运行。但是如果我像这样更改 IBAction 中的 url:

NSString *stringURL = "maps://";

然后运行我的应用程序,我的按钮可以工作并且 map 会打开!

这是 iBook 的错误吗?还是我的bug?

FWIW,我使用的是 iOS 6 和 XCode 4.6.3

最佳答案

在打开 URL 之前,您必须检查 iOS 是否可以打开该 URL。您的 url 方案错误(就像您的情况一样),或者用户甚至没有安装 iBooks。即使您有正确的网址,也无法打开它,除非用户安装了与该网址对应的应用程序。

NSURL *url = ...
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}
else {
    // can't open url
}

关于ios - 在我的应用程序中使用 IBAction 打开时 iBooks 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17687412/

相关文章:

ios - SplitViewController 只显示白屏

objective-c - 检查用户是否在连续的 UISlider 上完成滑动?

javascript - 如何以编程方式在 UIWebView 中输入 'selection mode'?

javascript - 如何在Ibooks 固定排版书籍中只阻止翻页事件?

javascript - 找出何时通过 Javascript 在 EPUB FXL 中查看页面

ios - Swift:将 UIDatePicker 日期保存到 CoreData 中

ios - 具有多个比特率视频的 HTML5 视频标签?

ios - 如何在 viewdidload() 中使用 CLLocation 的位置(纬度、经度)

php - 使用php从iOS应用程序将图像上传到Web服务器显示错误?

ios - 使用 dispatch_after 做一些相对于其他事情何时完成的事情