【问题标题】:iBooks app crashes when opened with IBAction in my app在我的应用程序中使用 IBAction 打开 iBooks 应用程序时崩溃
【发布时间】:2013-07-15 06:36:49
【问题描述】:

好的,我在我的应用程序中使用 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 中的网址:

NSString *stringURL = "maps://";

然后运行我的应用程序,我的按钮会起作用,地图就会打开!

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

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

【问题讨论】:

    标签: ios objective-c ibooks


    【解决方案1】:

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

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

    【讨论】:

    • +1。感谢您添加此内容。我知道我已经拥有 iBooks,并且我正在创建的应用程序不会在 AppStore 上发布,但对于其他寻找答案的人来说,这是一个有价值的提示(我也将它放在我的代码中,以防万一)。跨度>
    【解决方案2】:

    好吧,我的错。我发现我使用了错误的 URL 方案。我从wiki.akosma 得到的iBooks:// 不起作用,但itms-books: 起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多